Javascript 不要等待函数完成
可能重复: 如何在不等待大量操作完成的情况下使代码继续Javascript 不要等待函数完成,javascript,node.js,Javascript,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");
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密集型任务,它针对处理大量轻量级连接进行了优化
如果您需要对node执行CPU密集型操作,您应该查看作业队列,如kue或任何其他发布/订阅实现,其中您将作业放置在队列上,第二个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密集型任务,它针对处理大量轻量级连接进行了优化
如果您需要对node执行CPU密集型操作,您应该查看作业队列,如kue或任何其他发布/订阅实现,其中您将作业放置在队列上,第二个node.js进程可以侦听新作业并在它们进入时执行它们
这将允许主节点进程快速处理新请求,并允许两个后台节点进程处理所有这些长时间运行的作业 js是一个流控制库,就像chovy提到的那样。而node.js还支持较低级别的操作,如启动单独的web_工作进程或elclanrs提到的子进程。在这种情况下,这两种方法中的任何一种都会对您有所帮助。我本来打算提供一个更好的链接,但我想这很好,我在node.js Web服务器中看到过,在node.js Web服务器中,函数被执行并立即返回,尽管我不完全理解在没有async.js的情况下是如何完成的。另外,@pilotcam您建议的帖子与此类似,尽管我不知道建议的答案在这里如何应用。当然,请随意证明我是错的:D.async.js是一个流控制库,就像chovy提到的那样。而node.js还支持较低级别的操作,如启动单独的web_工作进程或elclanrs提到的子进程。在这种情况下,这两种方法中的任何一种都会对您有所帮助。我本来打算提供一个更好的链接,但我想这很好,我在node.js Web服务器中看到过,在node.js Web服务器中,函数被执行并立即返回,尽管我不完全理解在没有async.js的情况下是如何完成的。另外,@pilotcam你所建议的帖子也很相似,不过我不知道你所建议的答案如何适用于这里。当然,请随意证明我是错的:D。