竹笋

首页 » 问答 » 常识 » Nodejs的微任务处理基于Node
TUhjnbcbe - 2023/6/28 18:44:00

作者:theanarkh来源:编程杂技

前言:Node.js的事件循环已经老生常谈,但是在Node.js的执行流程中,事件循环并不是全部,在事件循环之外,微任务的处理也是核心节点,比如nextTick和Promise任务的处理。本文介绍Node.js中微任务处理的相关内容。网上文章和很多面试题中有很多关于Promise、nextTick、setTimeout和setImmediate执行顺序的内容。通过本文,让你从原理上理解他们,碰到相关的问题就刃而解,不再拘泥于背诵和记录。

1事件循环

本文不打算详细地讲解事件循环,因为已经有很多相关文章,而且本身也不是很复杂的流程。事件循环本质上是一个消费者和生产者的模型,我们可以理解事件循环的每一个阶段都维护了一个任务队列,然后在事件循环的每一轮里就会去消费这些任务,那就是执行回调,然后在回调里又可以生产任务,从而驱动整个事件循环的运行。当事件循环里没有生产者的时候,系统就会退出。而有些生产者会hold事件循环从而让整个系统不会退出,比如我们启动了一个TCP服务器。事件循环处理了Node.js大部分的执行流程,但是并不是全部。

2微任务

Node.js中,典型的任务包括nexiTick和Promise。

1
查看完整版本: Nodejs的微任务处理基于Node