gpt4 book ai didi

javascript - Promise.then 在 resolve 之前

转载 作者:行者123 更新时间:2023-12-05 02:27:52 25 4
gpt4 key购买 nike

我有一个对象数组,每个对象都需要来自 api 调用的数据。

每个对象的 api 端点都不同。

我正在迭代对象数组并为每个对象创建一个 promise 。

然后我使用 Promise.all 传递一组 promise 。

一旦 promise 得到解决,我需要用它们各自的数据更新原始对象数组。为了防止对象数组迭代两次,我在 Promise 解决之前将 then 的结果赋值(需要一个更好的词)。

它有效,但是这种方法有什么缺陷吗?

updateData = async (objects) => {
const promises = [];
objects.forEach(object => {
if (object.data === undefined) {
const service = this.serviceFactory.getService(object.serviceKey);
promises.push(service[object.serviceFunc](object.id).then(data => object.data = data));
}
});

await Promise.all(promises);
};

最佳答案

不,一切都很好,但我鼓励您在整个实现过程中使用 async/await。像这样:

const processObject = async (object) => {
if (object.data === undefined) {
const service = this.serviceFactory.getService(object.serviceKey);
const data = await service[object.serviceFunc](object.id);
object.data = data
}
return object;
}

updateData = async (objects) => {
const promises = objects.map(processObject);
const processedObjects = await Promise.all(promises);
};

关于javascript - Promise.then 在 resolve 之前,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/72854413/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com