javascript - 按顺序对数组项执行函数

标签 javascript arrays node.js asynchronous

假设我有一个数组和一个函数 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/

相关文章:

ios - 如何防止将相同的字符串添加到存储的数组中

php - 回显没有和有循环的数组的键和值

php - PHP中数字范围的计算

javascript - 通过浏览器禁用调试器语句

javascript - 函数声明和函数表达式可以互换使用吗?

javascript - 返回 meteor 调用方法

javascript - node.js:抛出错误并且没有被捕获

javascript - Facebook Messenger Bot Webhook 问题

javascript - data-toggle ="dropdown"激活路由重定向而不是 yeoman 中的下拉菜单

javascript - 将 Adsense 代码添加到 header.php 后,WordPress CSS 未加载