我正在开发一个 JavaScript 库,该库除其他外提供可异步迭代的序列上的 map/reduce 函数。
GitHub 上一位乐于助人的人建议,对于 Node.js,我应该使用它process.nextTick
来尽可能快地进行异步迭代。(该库目前setTimeout
在所有环境中都使用,我确实知道这是次优的。)我对 Node 非常缺乏经验,所以我正在阅读这种方法的工作原理,我不清楚它是否是一个好的选择与否。
根据对 SO 上另一个问题的回答,似乎setImmediate
在这种情况下使用它可能更有意义,因为它nextTick
显然会跳到未决的 I/O 事件之前,这对我来说似乎很糟糕。
Node v0.10.0 官方公告中的一些言论似乎证实了这一点:
在 v0.10 中,
nextTick
处理程序在每次从 C++ 调用 JavaScript 后立即运行。这意味着,如果您的 JavaScript 代码调用process.nextTick
,则回调将在代码运行完成后立即触发,但在返回事件循环之前。
所以我是对的,异步迭代序列应该用setImmediate
? 或者nextTick
在这里会是更好的选择?(在任何一种情况下,一个清楚的解释为什么会非常感激。)