ras*_*cio 5 events asynchronous callback node.js
我无法知道在执行' 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
})
Run Code Online (Sandbox Code Playgroud)
有没有办法after4AsyncOperation在4个异步函数之后执行而不必将函数写入另一个内部,例如:
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();
})
})
})
})
Run Code Online (Sandbox Code Playgroud)
我建议使用一个异步库,如Caolan的Async.然后,您可以使用async.parallel,async.series或async.auto. 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();
})
Run Code Online (Sandbox Code Playgroud)
这可以通过从我们期望回调被调用的次数开始倒数(numFuncs),并且只after4AsyncOperation在我们被调回正确次数时才调用.
| 归档时间: |
|
| 查看次数: |
2343 次 |
| 最近记录: |