【发布时间】:2020-07-17 14:25:58
【问题描述】:
我想在 for 循环迭代期间更改对象数组 (t) 的项目 (f)。 下面的代码可以正常工作。
for (const f of t) {
f.value = await getValue(f.a, f.b)
f.coordinate = 'not empty'
}
但是,我想在调用 getValue 时避免使用 await 关键字 ,而是使用 Promise.all 或其他替代方法,以便同时执行许多 getValue 函数调用。目前,每次迭代都等待getValue 函数完成,然后再继续下一次循环迭代。
无需更改正在迭代的对象,我将使用promises 数组变量来解决它,我在每次迭代期间将承诺推送到该变量。但是,当我更改迭代对象数组时,我不确定如何实现我的目标。
【问题讨论】:
-
但这不也一样吗?为什么要避免使用
await? -
@fedesc 我想在 for 循环执行后的最后使用 await Promise.all 以等待所有 getValue 调用完成。当前循环等待每个单独的 getValue 调用完成。因此它不会并行运行。至少我认为这是 promise.all 的用例——我不是专家。
-
所以在你的
for...of循环中只需要准备迭代器以便稍后在 awaitPromise.all()中调用 -
@fedesc:我不太清楚你的意思。
标签: javascript