gpt4 book ai didi

javascript - 如何使返回 Promise 的函数在 forEach 循环内正常工作?

转载 作者:行者123 更新时间:2023-12-03 06:43:27 25 4
gpt4 key购买 nike

由于返回 Promise 的函数是异步的,因此如何在 forEach 循环内使用它? forEach 循环几乎总是会在 promise 返回函数获取或操作的数据完成其数据操作之前完成。

这是我遇到此问题的一些代码的示例。

        var todaysTopItemsBySaleFrequency = [];

listOfItemIdsAndSaleFrequency.forEach((item) => {

Product.findById(item.itemId).then((foundItem) => {

var fullItemData = foundItem.toJSON();

fullItemData.occurrences = item.occurrences;

todaysTopItemsBySaleFrequency.push(fullItemData);

});

});

return res.status(200).json(todaysTopItemsBySaleFrequency);

名为todaysTopItemsBySaleFrequency 的数组被发送回客户端为空。 findById 是一个 Mongoose 函数,它返回一个 promise ,因此当响应发送回客户端时它不会完全填充数组。

最佳答案

您不能使用 forEach 循环,因为它仅适用于不返回任何内容的函数。如果他们返回某些内容或对其做出 promise ,您将必须使用 map 循环。然后,您可以对结果(promise 数组)使用 Promise.all:

Promise.all(listOfItemIdsAndSaleFrequency.map(item => 
Product.findById(item.itemId).then(foundItem => {
var fullItemData = foundItem.toJSON();
fullItemData.occurrences = item.occurrences;
return fullItemData;
})
)).then(todaysTopItemsBySaleFrequency => {
res.status(200).json(todaysTopItemsBySaleFrequency);
})

关于javascript - 如何使返回 Promise 的函数在 forEach 循环内正常工作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37849709/

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