为了账号安全,请及时绑定邮箱和手机立即绑定

Promise的then方法中的回调函数和setTimeout执行顺序问题

Promise的then方法中的回调函数和setTimeout执行顺序问题

四季花海 2018-08-03 18:56:41
 setTimeout(function(){        console.log('D');     },0)    var promise = new Promise(function(resolve, reject){        console.log('A');         resolve('C');     })    console.log('B');            promise.then(function(value){        console.log(value)     });          这段代码AB先打印我没问题,就是不理解为什么是C先于D打印,按理说应该是setTimeout先把回调放进任务队列里面等待执行吧
查看完整描述

2 回答

?
呼啦一阵风

TA贡献1802条经验 获得超6个赞

因为有俩个队列.

一个是 microtask 队列, 一个 macrotask 队列.

promise 是放入 microtask 队列的, 而 setTimeout 放入 macrotask 队列.

先处理 microtask 队列, microtask 队列每次处理直到队列为空, 接下来处理 macrotask 队列, macrotask 每次只处理的队列里的第一个任务, 当任务处理完后, 又会进入到 microtask 队列的处理. 如此反复.


查看完整回答
反对 回复 2018-08-05
  • 2 回答
  • 0 关注
  • 1891 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信