nodejs开始一个新的调用堆栈

时间:2014-08-05 10:36:11

标签: javascript node.js

我有以下问题:

我有一个包含函数的数组,我需要一个接一个地调用:

fun[0]()然后fun[1]() ...

由于这些函数进行异步调用,我不能只写

fun[0]();
fun[1]();

因此我在结尾处添加了一笔'对数组中的每个函数调用下一个函数。

这实际上有效,但这会导致堆栈增长。 例如:

function fun0(){
   fun[1](); // now fun[1] is added to the stack
}

有没有办法避免这个问题?我不需要其他函数的局部变量。

2 个答案:

答案 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()

实现这个目标