按顺序执行对数组项的函数

yao*_*ing 3 javascript arrays asynchronous node.js

说我有一个数组和一个函数A:

var array = ['a', 'b', 'c'];
function A(p) { ... };
Run Code Online (Sandbox Code Playgroud)

现在我想传递array函数的每个项目A,并希望它们按顺序执行.通常不会有任何问题.我可以:

array.forEach(function(item) {
  A(item);
}
Run Code Online (Sandbox Code Playgroud)

但是,如果有一些异步操作A,一切都搞砸了.所以问题是:

即使A中存在异步操作,如何才能使它们按顺序执行?

我的意思是,我想在A('a')完全结束后执行A('b')(包括那里的所有异步动作).

我想一定有一些公用事业公司已经做过这样的事了.有人能给我一些光明吗?

tho*_*mas 7

这是async.js中 "eachSeries"的完美用例

你可以这样使用它

async.eachSeries(array, A, function(err) {
    // this function gets called at the end 
    // after your array has been looped
});
Run Code Online (Sandbox Code Playgroud)

而且您必须使用第二个参数修改A函数 - 回调.

function A(p, callback) {
    // ...
    return callback();
}
Run Code Online (Sandbox Code Playgroud)

一旦A中的异步调用完成,就会调用callback参数.