88.宏任务微任务代码执行顺序
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