Javascript nodej正在启动一个新的调用堆栈

Javascript nodej正在启动一个新的调用堆栈,javascript,node.js,Javascript,Node.js,我有以下问题: 我有一个带函数的数组,需要逐个调用: fun[0]()然后fun[1]() 因为这些函数进行异步调用,所以我不能只编写 fun[0](); fun[1](); 因此,我在数组中每个函数的“末尾”添加了对下一个函数的调用 这实际上是可行的,但这会导致堆栈增长。 例如: 有没有办法避免这个问题?我不需要其他函数的局部变量。是的,有办法解决 您可以使用async.js 使用npm Install async安装它 如果你想一个接一个地执行函数,有一个方法 async.series(

我有以下问题:

我有一个带函数的数组,需要逐个调用:

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

因为这些函数进行异步调用,所以我不能只编写

fun[0]();
fun[1]();
因此,我在数组中每个函数的“末尾”添加了对下一个函数的调用

这实际上是可行的,但这会导致堆栈增长。 例如:


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

是的,有办法解决

您可以使用async.js

使用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中的所有函数一个接一个地执行。

您可以使用

process.nextTick()


要实现这一点,请查阅“承诺”。这样,您就可以轻松地通过管道进行异步调用。我不经常使用nodejs来解释它,但是这里有很好的资源。这是一个很好的介绍:您真的应该阅读更多关于在JS中处理异步性的内容。我发现这是一个关于这个主题的很好的教程。Promise(在Java中也称为future)是一种允许您转义的设计模式,通常在编写异步代码时弹出。嘿,谢谢您的回答。通过查看async,我发现了实际的进程。nextTick()和setInverval()实现了我想要的功能。您能否详细说明如何使用这些函数来解决问题?使用这两种方法的优缺点是什么?函数的名称并不能说明在这种情况下您打算如何使用它们,以及它们如何回答问题。问题可以用“不清楚你在问什么”来结束——这个答案相当于“不清楚你在回答什么”。
process.nextTick()
setInverval()