Skip to content

浏览器和 Node 中的事件循环有什么区别?

Posted on:2024年8月10日 at 17:05

浏览器

关于微任务和宏任务在浏览器的执行顺序是这样的:

如此循环往复下去

常见的 task(宏任务) 比如:setTimeout、setInterval、script(整体代码)、 I/O 操作、UI 渲染等。 常见的 micro-task 比如: new Promise().then(回调)、MutationObserver(html5新特性) 等。

Node

Node的事件循环是libuv实现的,引用一张官网的图:

image.png

大体的task(宏任务)执行顺序是这样的:

微任务和宏任务在Node的执行顺序

Node 10 及以前:

Node 11以后: 和浏览器的行为统一了,都是每执行一个宏任务就执行完微任务队列。

原文转自:https://fe.ecool.fun/topic/12240b0e-e285-422e-b6ac-b1e839af6cae