JS代码执行顺序的问题,求大家帮忙看看?

console.log(1);
setTimeout(function () {
    console.log(2)
},0)
new Promise(function (resolve) {
    console.log(3);
    resolve();
    console.log(4);
}).then(function () {
    console.log(5);
});
console.log(6)
阅读 1.9k
3 个回答

极其经典的一道题
输出顺序是 1,3,4,6,5,2
setTimeout()开了个新进程,会在最后执行
Promise()中 .then()会在整体结束后执行。

看看这篇文章:https://segmentfault.com/p/12...

1-3-4-6-5-2

1应该没有问题
2是因为setTimeout 0 会放在当前代码队列最后
3应该也是没问题,
4是因为resolve();只是改变状态,但是不影响当前作用域下后续代码执行,
5是因为thenAction是其实也是异步的,所以会在6之后输出。

setTimeout中的代码会在下个tick中执行,Promise中的代码正常执行,then方法中的代码在当前tick的末尾执行 所以执行顺序是 tick1(1 3 4 6 5) nextTick(2)

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题