面试知识梳理-二、js篇章

时间:2024-10-16 14:11:31

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() 创建了两个微任务,这两个微任务会在当前宏任务结束前立即执行。
总结:先同步 然后是 微任务 最后是宏任务