假设我有一个数组和一个函数 A:
var array = ['a', 'b', 'c'];
function A(p) { ... };
现在我想将 array
的每一项传递给函数 A
,并希望它们按顺序执行。通常不会有任何问题。我能做到:
array.forEach(function(item) {
A(item);
}
但是,如果 A
中有一些异步操作,一切都会变得一团糟。所以问题是:
即使 A 中有异步操作,我如何让它们有序执行?
我的意思是,我希望 A('b') 在 A('a') 完全完成(包括其中的所有异步操作)之后执行。
我想一定有一些实用程序已经在做这样的事情了。有人可以给我一些启示吗?
最佳答案
这是 async.js 中“eachSeries”的完美用例
你可以这样使用它
async.eachSeries(array, A, function(err) {
// this function gets called at the end
// after your array has been looped
});
并且您必须使用第二个参数(回调)修改 A 函数。
function A(p, callback) {
// ...
return callback();
}
一旦 A 中的异步调用完成,就会调用回调参数。
关于javascript - 按顺序对数组项执行函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32047018/