Promise.resolve().then(() => console.log(2));
newPromise((resolve, reject) => {
resolve();
console.log(3);
}).then(() => console.log(4));
setTimeout(() => { Promise.resolve().then(() => console.log(5));
setTimeout(() => console.log(7), 0);
}, 0);
setTimeout(() => console.log(6), 0);
首先主代码进入执行栈, 遇到第一句,将该promise压入微任务队列, 遇到第二句,打印 3 同时将该微任务压入promise
遇到第三句,将该任务压入宏任务 ,遇到第四句 将该任务压入宏任务
到此 主任务执行完毕,开始执行 微任务(微任务优先宏任务) 打印语句2, 打印语句4
到此 微任务执行完毕,开始执行 宏任务 =》 将微任务压入队列,将宏任务压入队列
执行完毕后 检测是否有微任务如果有就执行 打印5, 执行完毕后打印 宏任务 6 ,7
因此顺序是 3 2 4 5 6 7