执行'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.parallel
, async.series
或async.auto
。 auto
是最灵活的,但比别人慢一点; 在parallel
和series
之间进行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,这是您似乎正在努力完成的任务。