Node.js中的长循环:使用定时器产生?

时间:2012-10-08 00:29:22

标签: javascript node.js performance

我正在使用Node.js来浏览最终非常大数组的帖子。

如果我使用客户端JavaScript 做类似的事情,我会使用计时器as explained here,以免阻塞该线程。

我的问题是:“仍然是一个健全的练习服务器端?”或“我应该以不同的方式解决问题吗?”

3 个答案:

答案 0 :(得分:14)

在node.js中执行此操作的正确方法是将您的工作分解为块并使用process.nextTick在当前块完成后对下一个块进行排队。这样,您就可以在每个工作块之间执行其他排队的回调。

更新:从Node.js 0.10开始,为了这个目的,通常应该使用setImmediate代替process.nextTick,因为setImmediate会将事件循环输出到确保I / O不会被饿死,但process.nextTick没有。

答案 1 :(得分:1)

JohnnyHK的建议是有效的。当任务可以在以后完成时,我会考虑Web工作者(即:添加到队列中)。

答案 2 :(得分:-2)

查看async库。它提供了常用集合方法的异步版本(map,filter,each ...)。 AFAIK,异步处理您的数组不会阻止其他进程或用户。