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

1 篇文章 0 订阅

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

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值