Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/442.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 不要等待函数完成_Javascript_Node.js - Fatal编程技术网

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。