不要等待功能完成

时间:2012-10-07 01:41:17

标签: javascript node.js

  

可能重复:
  “Spawn a thread”-like behaviour in node.js

如何在不等待大量操作完成的情况下继续我的代码?

var foo = function()
{
    var i = 1000000000;
    while (i > 0)
    {
        i--;
    }
};
console.log("start");
foo();
console.log("end");

修改 这不适用于Web开发。我正在使用node.js

1 个答案:

答案 0 :(得分:3)

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或任何其他发布/订阅实现),其中将作业放在第二个node.js进程的队列中可以听取新的工作并在他们进来时执行。

这将允许主节点进程快速处理新请求,并允许一些后台节点进程处理所有这些长时间运行的作业。