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

promise 异步是在当前 event loop 任务队列尾部添加其回调函数么?

promise 异步是在当前 event loop 任务队列尾部添加其回调函数么?

青春有我 2018-12-21 19:10:50
  (function () {    console.log(1);    var p4 = new Promise((resolve, reject) => {      resolve('ok');      setTimeout(() => {        console.log(6)      }, 500);      console.log(2);    });    console.log(3);    p4.then(value => {      console.log(5);      console.log(value);    });    console.log(4);  })();  // 1 2 3 4 5 ok undefined 6问题:打印顺序为 4 5 ok 6?这样理解正确么?Promise 异步是当前 event loop 的任务队列队尾添加了 resolve 的回调函数,而 setTimeout 我们知道是会下下一轮 event loop 的任务队列尾部添加回调函数。
查看完整描述

1 回答

?
守着一只汪

TA贡献1872条经验 获得超3个赞

理解可以这么理解,事实上 Promise 是基于 Jobs(Microtasks) 机制的,即当前代码执行完只剩平台代码的时候就会触发,所以会在下一个 Event Loop 之前。这里平台代码包括引擎、环境和 Promise 本身实现的代码。


查看完整回答
反对 回复 2019-01-21
  • 1 回答
  • 0 关注
  • 395 浏览
慕课专栏
更多

添加回答

举报

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