是构造"共享的"对象的正确方式?
const shared = {};
const createUniqueField = async (value) => {
shared[value] = await getDataFromSomeService(value);
};
await Promise.all(someArrayWithUniqueValues.map(value => createUniqueField(value)));
如果没有,有什么替代方法?
这取决于你所说的"安全";和"正确",但下面的方法可能更合适:
const mapDataToValue = async (value) => {
const data = await getDataFromSomeService(value);
return { [value]: data };
};
const pairs = await Promise.all(someArrayWithUniqueValues.map(mapDataToValue));
const shared = pairs.reduce((merged, pair) => ({ ...merged, ...pair }), {});
- 副作用免费的,
- 不能最终处于
shared
"半建成"的状态;(你的方法可能也不是这样,这取决于你如何处理可能的错误)。