我正在使用Node.js来循环浏览最终可能是大量帖子的内容。
如果我使用客户端 JavaScript做类似的事情,我会使用这里解释的计时器,以免阻塞线程。
我的问题是:“仍然是一个健全的实践服务器端?” 或“我应该以不同的方式解决问题吗?”
在 node.js 中执行此操作的正确方法是将您的工作分解为块,并process.nextTick
在当前块完成后用于将下一个块排队。这样,您就可以在每个工作块之间执行其他排队的回调。
更新:从 Node.js 0.10 开始,setImmediate
通常应该使用而不是process.nextTick
用于此目的,因为setImmediate
会产生事件循环以确保 I/O 不会被饿死,但process.nextTick
不会。
JohnnyHK 的建议是有效的。当任务可以稍后完成时(即:添加到队列中),我会考虑网络工作者。
看看异步库。它提供了常用收集方法(map、filter、each...)的异步版本。AFAIK,异步处理您的数组不会阻塞其他进程或用户。