gpt4 book ai didi

javascript - 然后返回 Promise 内的 Promise 链

转载 作者:行者123 更新时间:2023-11-28 12:14:50 25 4
gpt4 key购买 nike

我想使用 axios 获取返回 objectId 数组列表的 API。获得列表 objectId 后,我想使用 Promise 获取对象的详细信息

我想到了这样的事情

var objectDetail = [];

axios.get('apiendpoint/')
.then((response) => {
var listOfObjectId = response.data;
var chain = Promise.resolve()
for (var objectId of listOfObjectId) {
chain = chain.then(axios.get(`apiendpoint/${objectId}`)
.then((response) => {
objectDetail.push(response.data);
})
);
}
return chain;
}).then((chain) => {
console.log(chain);
return chain;
})

上面的代码返回 undefined,promise 链对象没有传递给 then 方法调用。我的方法是错误的还是我错过了什么?谢谢

以下是我读过的一些堆栈,可能相关:

最佳答案

promise 链正在被传递到最终的.then,但是 promise 链没有返回任何东西:看看你的

.then((response) => {
objectDetail.push(response.data);
})

该函数不返回任何内容。如果您想在链的末尾使用objectDetail而不引用外部变量,也返回它:

.then((response) => {
objectDetail.push(response.data);
return objectDetail;
})

但请注意

}).then((chain) => {
console.log(chain);
return chain;
})

有点多余 - 除非您这样做只是为了记录结果,最好完全放弃它。

如果您使用 Promise.all ,您的代码会更清晰:

axios.get('apiendpoint/')
.then(({ data }) => Promise.all(
data.map(objectId => (axios.get(`apiendpoint/${objectId}`)
.then(res => res.data)
))
));

关于javascript - 然后返回 Promise 内的 Promise 链,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51853929/

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