我正在使用Node.js来浏览最终非常大数组的帖子。
如果我使用客户端JavaScript 做类似的事情,我会使用计时器as explained here,以免阻塞该线程。
我的问题是:“仍然是一个健全的练习服务器端?”或“我应该以不同的方式解决问题吗?”
答案 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,异步处理您的数组不会阻止其他进程或用户。