我有以下问题:
我有一个包含函数的数组,我需要一个接一个地调用它:
fun[0]()
然后 fun[1]()
...
由于这些函数进行异步调用,我不能只写
fun[0]();
fun[1]();
因此,我在数组中每个函数的“末尾”添加了对下一个函数的调用。
这确实有效,但这会导致堆栈增长。 示例:
function fun0(){
fun[1](); // now fun[1] is added to the stack
}
有办法避免这个问题吗?我不需要其他函数的局部变量。
最佳答案
是的,有办法解决。
您可以使用 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 中的所有函数依次执行。
关于javascript - Nodejs 启动一个新的调用堆栈,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25136726/