我有以下问题:
我有一个包含函数的数组,我需要一个接一个地调用:
fun[0]()
然后fun[1]()
...
由于这些函数进行异步调用,我不能只写
fun[0]();
fun[1]();
因此我在结尾处添加了一笔'对数组中的每个函数调用下一个函数。
这实际上有效,但这会导致堆栈增长。 例如:
function fun0(){
fun[1](); // now fun[1] is added to the stack
}
有没有办法避免这个问题?我不需要其他函数的局部变量。
答案 0 :(得分:1)
是的,有办法解决。
您可以使用async.js https://github.com/caolan/async
使用npm install async
然后,如果你想一个接一个地执行函数,有一个方法,
async.series([
function(callback){
// do some stuff ...
callback(null, 'one');
},
function(callback){
// do some more stuff ...
callback(null, 'two');
}
],
// optional callback
function(err, results){
// results is now equal to ['one', 'two']
});
第二个函数仅在第一个函数发出回调时执行。 因此,这可以确保async.series中的所有函数一个接一个地执行。
答案 1 :(得分:0)
您可以使用
process.nextTick()
或
setInverval()
实现这个目标