88.宏任务微任务代码执行顺序

书诚小驿2025/07/08前端面经算法Javascript
console.log(1);
new Promise((resolve, reject) => {
  console.log(2);
  setTimeout(() => {
    console.log(3);
    Promise.resolve().then(() => {
      console.log(4);
    });
  }, 0);
  resolve();
  reject(); // 这行无效
  console.log(5);
}).then(
  () => {
    console.log(6);
    Promise.resolve().then(() => {
      console.log(7);
    });
    setTimeout(() => {
      console.log(8);
    }, 0);
  },
  () => {
    console.log(10);
  }
);

错误回答

1 2 6 10 7 3 4 8

参考答案

DETAILS

为什么没有输出 10?

  • reject()在 resolve()之后调用无效(Promise 状态不可逆)
  • 当 Promise 被 resolve()后,后续的 reject()调用会被忽略
  • .then()只会触发第一个成功回调函数
1 2 5 6 7 3 4 8
最后更新时间' 2025/7/9 01:40:10