首页 > 解决方案 > 使用键异步循环数组

问题描述

我有一系列客户,我想遍历他们并为每个客户分配一个属性。通过 details 函数返回具有添加属性的客户对象

for (let i = 0; i < customers.length; i++)
{
    customers[i] = await details(customers[i]);
}

这就是我目前的做法,但它是同步的。我希望列表中的所有对象一次异步完成。我正在尝试使用异步库,但它只为我提供了循环内可用的客户对象,因此客户数组永远不会改变。

async.forEachOf(customers, (customer, finished) async =>
{
    customer = await details(customer);
    finished();
});

我该怎么做?谢谢

标签: javascriptasynchronousasync.js

解决方案


您不需要第三方库来完成此操作。只需使用Promise.all()Array.prototype.map()

const customerDetails = await Promise.all(
  customers.map(customer => details(customer))
);

推荐阅读