执行'n'asynchronouscallback后,node.js执行函数

我不能得到如何执行一个callback' n 'asynchronousfunction执行后,例如:

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之后的4个asynchronous函数,而不必编写一个function之一,例如:

  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(); }) }) }) }) 

我会build议使用asynchronous库,如Caolan的asynchronous 。 然后,您可以使用async.parallelasync.seriesasync.autoauto是最灵活的,但比别人慢一点; 在parallelseries之间进行select将需要更多关于你正在做什么的信息 – 你的第一个例子是并行操作,但是你的第二个例子是串联的。

但是,如果你不想使用库,你可以写一些自定义的东西。 我会做如下:

 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(); }) 

这是通过从我们期望callback被调用的次数( numFuncs )开始after4AsyncOperation ,并且只有在我们被调用了正确的次数后才调用after4AsyncOperation

您可以利用具有此function和许多其他好function的伟大的asynchronous库。 为了完成你想要做的事情,你可以使用系列:

https://github.com/caolan/async#series

或平行:

https://github.com/caolan/async#parallel

两者之间的区别在于,系列将继续运行所有function,而并行运行所有function。 在任何一种情况下,在完成这些工作后都会有一个callback,这是您似乎正在努力完成的任务。