首页 > 解决方案 > nextTick() 回调是在任何其他 JS 代码之前还是之后运行?

问题描述

文档摘录:

process.nextTick()从技术上讲,它不是事件循环的一部分。相反,nextTickQueue 将在当前操作完成后处理,而不考虑事件循环的当前阶段。在这里,(1) 操作被定义为来自底层 C/C++ 处理程序的转换,并处理需要执行的 JavaScript。

来自节点 js 博客的一篇

在 v0.10 中,(2) nextTick 处理程序在每次从 C++ 调用 JavaScript 后立即运行。这意味着,(3)如果您的 JavaScript 代码调用 process.nextTick,那么回调将在代码运行完成后立即触发,但在返回事件循环之前

也许我在深夜开始看不清,但对我来说,(1)(2)意味着一件事,(3)是完全不同的事情。也就是说,(1)/(2)声明nextTick()一旦 C/C++ 代码将控制权转移回 JS 端,就会执行回调(由 JS 预先安排)。相反,(3)涉及到回调应该在 JS 代码调度之后运行,而不是进入基于 C 的事件循环。

谁能提供一些澄清?如果我的 I/O 回调setImmediate()用于另一个回调,后者将“当场”执行还是控制流首先访问事件循环?

标签: javascriptnode.js

解决方案


推荐阅读