Event Loop(事件循环)是 JavaScript 中实现异步编程的一种机制。我们都知道 JavaScript 是单线程的语言,意味着同一时间只能执行一个任务,如果一个任务需要花费很长时间,就会阻塞后面的代码执行,这种情况称为“阻塞”或“同步”。

为了避免阻塞,JavaScript 引入了异步编程的概念,即将任务交给其他线程(如浏览器的网络线程),等到任务完成后再将回调函数加入到任务队列中,等待 JavaScript 引擎执行。这种情况称为非阻塞异步

Event Loop 就是负责管理任务队列的机制。它是一个在 JavaScript 引擎内部实现的循环,不断地检查任务队列中是否有待执行的任务。当主线程执行完当前任务后,会去检查任务队列中是否有待执行的任务。如果有,就将其取出并执行,如果没有,则继续等待,直到有任务加入到任务队列中。

任务队列分为两种:宏任务和微任务。当 JavaScript 引擎执行一个宏任务时,如果宏任务中包含了微任务,那么会先执行微任务,再执行下一个宏任务。这种机制称为“事件循环”。

常见的宏任务包括:

  1. setTimeout
  2. setInterval
  3. DOM 事件
  4. AJAX 请求等

常见的微任务包括

  1. Promise 中的 then、catch、finally 方法
  2. MutationObserver 等。

微任务相比宏任务执行更快,并且优先级更高,因为它们不需要等待 I/O 操作,只是在内存中执行一些简单的代码。

Event LoopJavaScript 实现异步编程的核心机制,理解 Event Loop 的工作原理和任务队列的概念,对于编写高效的异步代码非常重要。

如果对你有用的话,可以打赏哦
打赏
ali pay
wechat pay

本文作者:叶继伟

本文链接:

版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!