如何在不等待大量操作完成的情况下继续我的代码?
var foo = function()
{
var i = 1000000000;
while (i > 0)
{
i--;
}
};
console.log("start");
foo();
console.log("end");
修改 这不适用于Web开发。我正在使用node.js
答案 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进程的队列中可以听取新的工作并在他们进来时执行。
这将允许主节点进程快速处理新请求,并允许一些后台节点进程处理所有这些长时间运行的作业。