Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/39.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
node.js在'之后执行函数;n';执行异步回调_Node.js_Events_Asynchronous_Callback - Fatal编程技术网

node.js在'之后执行函数;n';执行异步回调

node.js在'之后执行函数;n';执行异步回调,node.js,events,asynchronous,callback,Node.js,Events,Asynchronous,Callback,我不知道如何在执行“n”个异步函数后执行回调,例如: var after4AsyncOperation = function(){ //do something... } process.nextTick(function(){ //do stuff }) process.nextTick(function(){ //do stuff }) process.nextTick(function(){ //do stuff }) process.nextTick(fu

我不知道如何在执行“n”个异步函数后执行回调,例如:

var after4AsyncOperation = function(){
    //do something...
}
process.nextTick(function(){
    //do stuff
})
process.nextTick(function(){
    //do stuff
})
process.nextTick(function(){
    //do stuff
})
process.nextTick(function(){
    //do stuff
})
是否有一种方法可以在4个异步函数之后执行
after4AsyncOperation
,而不必将函数一个写入另一个,例如:

    var after4AsyncOperation = function(){
    //do something...
}
process.nextTick(function(){
    //do stuff
    process.nextTick(function(){
        //do stuff
        process.nextTick(function(){
            //do stuff
            process.nextTick(function(){
                //do stuff
                after4Asyncoperation();
            })
        })
    })
})

您可以利用具有此功能和许多其他优秀特性的强大库。要具体完成您希望完成的任务,您可以使用以下系列:

或平行:


两者之间的区别在于,串联运行一个接一个的所有函数,而并联同时运行所有函数。在任何一种情况下,在它们全部完成后都会有一个回调,这似乎是您试图实现的。

我建议使用异步库,例如。然后,您可以使用
async.parallel
async.series
async.auto
<代码>自动是最灵活的,但是比其他的稍慢一些;在
parallel
series
之间进行选择需要更多关于您尝试执行的操作的信息-第一个示例是并行操作,但第二个示例是串联操作

但是,如果您不想使用库,可以编写自定义的内容。我会这样做:

var numFuncs = 4;
var callback = function(){
  numFuncs--;
  if(numFuncs == 0) {
    after4AsyncOperation();
  }
}
var after4AsyncOperation = function(){
    //do something...
}
process.nextTick(function(){
    //do stuff
    callback();
})
process.nextTick(function(){
    //do stuff
    callback();
})
process.nextTick(function(){
    //do stuff
    callback();
})
process.nextTick(function(){
    //do stuff
    callback();
})
这是通过从我们期望调用回调的次数倒计时来实现的(
numFuncs
),并且只有在我们被回调了正确的次数后才调用
after4AsyncOperation