【发布时间】:2021-08-06 20:34:59
【问题描述】:
我有一组客户,我想遍历他们并为每个客户分配一个属性。添加属性的客户对象通过 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();
});
我该怎么做呢?谢谢
【问题讨论】:
-
我认为您的要求不是很清楚。第一个代码示例是我认为您想要做的事情,您的描述并不清楚为什么它是错误的。
-
如果拿第一个例子,改成
customers[i].details = await details(customers[i]);,是不是更接近你想要的? -
是的,它完全符合我的需要,但它是同步的。假设有 10 个客户,我希望所有 10 个客户同时完成。 details 函数返回带有添加属性的客户,因此我想通过使用 customers[i] 更新该客户,而在第二个示例中,客户是在函数中定义的,因此在我无法返回带有添加功能的客户列表之后
-
s/synchronous/sequential。您使用“同步”错误。 -
哦,您希望它们同时完成。这很简单,我会发表评论
标签: javascript asynchronous async.js