javascript - 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()
用于另一个回调,后者将“当场”执行还是控制流首先访问事件循环?
解决方案
推荐阅读
- reactjs - ReactJS - 将更新的值传递给子组件方法
- java - 同步器混乱
- excel - 确定列中的值是否在数组中的 2 个数字之间
- c - 在C中使用pthreads查找数组的平方和
- jenkins - provider.vault:“地址”:未设置必填字段
- asp.net-core - 如何使用 ASP.NET Core 2.2 创建用户
- java - Spring Boot Cacheable 注解——如何刷新每个请求的结果
- python - 如何修复两个对象同名“分配前引用的局部变量”Python中的错误
- mysql - 在 MySQL 中取消透视多个分组列
- ios - 如何用可变行创建一段StaticTableView?