1.说一下event loop
console.log(‘Script start’);
setTimeout(() => {
console.log(‘setTimeout’);
}, 0);
Promise.resolve().then(() => {
console.log(‘Promise 1’);
}).then(() => {
console.log(‘Promise 2’);
});
console.log(‘Script end’);
在这个例子中,输出顺序将是:
深色版本
Script start
Script end
Promise 1
Promise 2
setTimeout
解释:
“Script start” 和 “Script end” 是同步代码,直接执行。
setTimeout 被安排为一个宏任务,即使延迟时间为 0,也会等到当前调用栈清空并且所有微任务完成后才被执行。
Promise.resolve().then() 创建了两个微任务,这两个微任务会在当前宏任务结束前立即执行。
总结:先同步 然后是 微任务 最后是宏任务