【发布时间】:2015-11-09 21:23:20
【问题描述】:
假设我有一个数组和一个函数 A:
var array = ['a', 'b', 'c'];
function A(p) { ... };
现在我想将array 的每一项传递给函数A,并希望它们按顺序执行。通常不会有任何问题。我能做到:
array.forEach(function(item) {
A(item);
}
然而,如果A 中有一些异步操作,一切都会变得一团糟。所以问题是:
即使A中有异步动作,如何让它们有序执行?
我的意思是,我希望 A('b') 在 A('a') 完全完成后执行(包括其中的所有异步操作)。
我想一定有一些实用程序已经在做这样的事情了。有人能给我一些启示吗?
【问题讨论】:
-
您是否尝试将函数 A 作为参数传递给 foreEach 而不是包装它?
-
在你当前的形式中,这几乎是不可能的,因为函数
A只接受一个参数,并且它没有能力在它完成它的工作时通知服务器(回调),所以服务器可以'不决定A('b')是否完整。 -
@fubbe 我猜它的运行方式相同。不保证 A 中的异步操作。
-
@fuyushimoya 哦,是的。它不必看起来像这样。回调是可以接受的。
标签: javascript arrays node.js asynchronous