JavaScript中的事件循环是什么_它如何管理代码的执行顺序呢

admin 百科 13
事件循环是JavaScript异步编程的核心机制,由宿主环境提供,协调同步代码、微任务(如Promise.then)和宏任务(如setTimeout)的执行顺序;其流程为:执行同步代码→清空微任务队列→执行一个宏任务→重复。

JavaScript中的事件循环是什么_它如何管理代码的执行顺序呢-第1张图片-佛山资讯网

JavaScript中的事件循环(Event Loop)是它实现异步编程的核心机制,负责协调同步代码、回调函数、微任务和宏任务的执行顺序。它不是JavaScript语言本身的一部分,而是由宿主环境(比如浏览器或Node.js)提供的运行时机制。

事件循环的基础结构:调用栈、任务队列与微任务队列

理解事件循环,得先看清三个关键角色:

  • 调用栈(Call Stack):后进先出(LIFO),用于执行同步代码。函数调用就入栈,执行完就出栈。
  • 宏任务队列(Callback Queue / Task Queue):存放setTimeout、setInterval、I/O、UI渲染等宏任务的回调。
  • 微任务队列(Microtask Queue):存放Promise.then/catch/finally、queueMicrotask()、MutationObserver等微任务的回调。

注意:微任务队列的优先级高于宏任务队列——每次调用栈清空后,引擎会先清空整个微任务队列,再取一个宏任务执行。

一次典型的事件循环执行流程

当一段JS代码开始运行,事件循环按如下节奏工作:

立即学习“Java免费学习笔记(深入)”;

  • 执行当前同步代码(压入并弹出调用栈)
  • 同步代码执行完毕,检查微任务队列;若有任务,逐个执行,直到队列为空(不中断)
  • 执行一个宏任务(如setTimeout的回调),进入下一轮循环
  • 重复上述步骤:执行 → 清微任务 → 取宏任务 → 执行……

举个例子:

console.log(1);
setTimeout(() => console.log(2), 0);
Promise.resolve().then(() => console.log(3));
console.log(4);
// 输出顺序:1 → 4 → 3 → 2

登录后复制

原因:1和4是同步代码,立即执行;Promise.then是微任务,排在同步之后、下一个宏任务之前;setTimeout是宏任务,在下一轮事件循环才执行。

标签: vue react javascript java js node.js node 浏览器 回调函数 ai 为什么

发布评论 0条评论)

还木有评论哦,快来抢沙发吧~