JavaScript 事件循环是 JavaScript 中处理异步编程的核心机制。它确保了即使有大量的异步任务,JavaScript 代码也能有序地执行。

事件循环的组成部分

  1. 调用栈(Call Stack):存放所有正在执行的函数调用。
  2. 任务队列(Task Queue):存放所有等待执行的异步任务。
  3. 事件循环(Event Loop):负责从任务队列中取出任务并执行。

事件循环的工作原理

  1. 执行一个同步任务,将其压入调用栈。
  2. 当调用栈为空时,检查任务队列。
  3. 如果任务队列不为空,从队列中取出一个任务,压入调用栈执行。
  4. 重复步骤2和3,直到任务队列为空。

微任务(Microtask)

微任务是事件循环的一部分,它在宏任务(如DOM更新)之前执行。常见的微任务有:

  • Promise.then()
  • MutationObserver
  • process.nextTick(Node.js)

宏任务(Macrotask)

宏任务是事件循环的另一部分,它在微任务之后执行。常见的宏任务有:

  • 代码执行
  • 网络请求
  • 定时器(setTimeoutsetInterval

例子

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/]