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