不要等待function完成
可能重复:
node.js中的“产生线程”行为
我怎样才能使我的代码继续而不用等待大量的操作来完成?
var foo = function() { var i = 1000000000; while (i > 0) { i--; } }; console.log("start"); foo(); console.log("end");
编辑这不是为web开发。 我正在使用node.js
在node.js
,你可以使用process.nextTick()
来做到这一点。 它将延迟执行长时间运行的任务,直到事件循环的下一个传递。
var foo = function() { var i = 1000000000; while (i > 0) { i--; } }; console.log("start"); process.nextTick(foo()); console.log("end");
请记住,这将允许这个请求立即返回,它仍然会阻止线程,当它最终被执行。 Node.js不适用于长时间运行的CPU密集型任务,它针对大量轻量级连接进行了优化。
如果您需要在节点上执行CPU密集型工作,您应该查看作业队列(如kue
或任何其他pub / sub实现),将作业放在队列中,第二个node.js进程可以监听新作业并执行他们进来。
这将允许您的主节点进程快速处理新的请求,并允许一些后台节点进程处理所有这些长时间运行的作业。