【发布时间】:2021-11-15 17:27:38
【问题描述】:
我正在编写一些如下所示的 Javascript 代码:
const arrayOfPromises = getArrayOfPromises();
Promise.all(arrayOfPromises).then(array => doStuff(array));
我需要更改 getArrayOfPromises() 以返回有关每个承诺的一些信息 - 为简单起见,假设它是每个承诺的简单真/假标志。我的第一个直觉是重构这个函数以返回一个对象数组,例如:
const getArrayOfObjects = () => {
...
return [
{ promise: promise1, flag: flag1 },
{ promise: promise2, flag: flag2 },
...
{ promise: promisen, flag: flagn }
];
}
但是,上述内容不适用于Promise.all,因为它只能直接用于可迭代的 Promise 对象,而没有中间的包装对象。
为每个 Promise 提供此类元数据并在解决所有 Promise 后使用它的最简单方法是什么?
【问题讨论】:
-
最简单的方法是放在一个单独的数组中,使用
doStuff里面的迭代索引 -
@ChrisG 不确定如何返回单独的数组 - 您可以发布示例代码作为答案吗? (也有点担心它不会非常节省内存,但可能会被误解。)
-
1.
return { arrayOfPromises: [...], arrayOfFlags: [...] }; 2.const { arrayOfPromises, arrayOfFlags } = getArrayOfObjects();3.doStuff(array, arrayOfFlags) -
“有关承诺的信息”究竟是什么,以及将在何处/如何使用它?
-
这是我的建议:jsfiddle.net/uf49rc8x(也应该比一堆新的 Promise 使用更少的内存)
标签: javascript arrays object promise metadata