JavaScript 事件循环是 JavaScript 中处理异步编程的核心机制。它确保了即使有大量的异步任务,JavaScript 代码也能有序地执行。
事件循环的组成部分
- 调用栈(Call Stack):存放所有正在执行的函数调用。
- 任务队列(Task Queue):存放所有等待执行的异步任务。
- 事件循环(Event Loop):负责从任务队列中取出任务并执行。
事件循环的工作原理
- 执行一个同步任务,将其压入调用栈。
- 当调用栈为空时,检查任务队列。
- 如果任务队列不为空,从队列中取出一个任务,压入调用栈执行。
- 重复步骤2和3,直到任务队列为空。
微任务(Microtask)
微任务是事件循环的一部分,它在宏任务(如DOM更新)之前执行。常见的微任务有:
Promise
的.then()
MutationObserver
process.nextTick
(Node.js)
宏任务(Macrotask)
宏任务是事件循环的另一部分,它在微任务之后执行。常见的宏任务有:
- 代码执行
- 网络请求
- 定时器(
setTimeout
、setInterval
)
例子
console.log('1');
setTimeout(() => {
console.log('2');
});
new Promise(resolve => {
console.log('3');
resolve();
}).then(() => {
console.log('4');
});
console.log('5');
输出:1 3 5 4 2
相关链接
更多关于 JavaScript 事件循环的信息,请参考 MDN Web Docs。
[center][https://cloud-image.ullrai.com/q/JavaScript_Event_Loop/]