宏任务macrotask有哪些
script setTimeout setInterval setImmediate requestAnimationFrame I/O操作 UI渲染
微任务microtask有哪些
process.nextTick MutationObserver Promise.then
执行优先级
主线程script>
微任务process.nextTick>promise>
宏任务setTimeout>setInterval>setImmediate>I/O>UI rendering
I/O是什么
mouse click , keypresses, network events
js内部执行机制
主线程script执行完=> 执行所有微任务=> 执行栈中第一个宏任务=> 执行所有微任务=> 执行栈中第一个宏任务=>…
举个例子,打印顺序就是数字顺序:
setTimeout(() => console.log(2), 0);
setTimeout(() => {
console.log(3);
Promise.resolve().then(() => {
console.log(4);
Promise.resolve().then(() => {
console.log(6);
});
console.log(5)
});
setTimeout(() => console.log(8), 0);
}, 0);
setTimeout(() => console.log(7), 0);
Promise.resolve().then(() => {
console.log(1);
});
//process.nextTick(()=>console.log(0)); //浏览器环境注释此句
关注下再走呗 +_+