setTimeout 和 promise 的输出顺序以及原理

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/oYuLian/article/details/88048869

1.

console.log(1);

setTimeout(function(){
   console.log(2);
})

Promise.resolve().then(function() {
  console.log(3);
}).then(function() {
  console.log(4);
});

//
正确输出结果 : 1,3,4,2

宏任务(task)和微任务(micro task )

    1、js中为了防止线程阻塞,阻止全局代码的执行,衍生出很多异步执行解决方案,这些方案都会按需加载到指定的队列中,当全局队列执行完毕后,开始循环从 微队列->宏队列->微队列->宏队列...这种执行顺序执行下去。

    2、当一个宏观队列执行完毕,立刻执行最近添加的微观队列。



setTimeout(function(){

  Promise.resolve().then(function() {
    console.log(3);
  }).then(function() {
    console.log(4);
  });

   console.log(2);
})


//
正确输出结果 : 2,3,4

参考文章:

1.https://www.jianshu.com/p/ada516ceb1da

2.https://www.cnblogs.com/dong-xu/p/7000139.html

猜你喜欢

转载自blog.csdn.net/oYuLian/article/details/88048869