gpt4 book ai didi

node.js - Promise { } - 尝试等待 .map

转载 作者:搜寻专家 更新时间:2023-10-31 22:37:42 25 4
gpt4 key购买 nike

我正在使用 .map绘制新对象并将旧价格添加到 map 中。

我在我的数据映射中使用 Async/Await,我的代码如下所示:

let datasets = await changes.map(async (data) => {
let products = {};
let last = await models.prices.findOne({
where: {
productId: data.productId,
sourceId: data.sourceId
},
order: [['createdAt', 'DESC']],
limit: 1,
offset: 1
});

products.name = data.product.name;
products.price = data.price;
products.sku = data.product.sku;
products.source = data.source.name;
products.link = data.link;
products.diff = last.price;


return products;
});

changes是最近 24 小时内发现的所有价格变化。

last包含上一次发现特定产品的价格变化的时间。

return products不等待,所以我收到 Promise { <pending> } 的垃圾邮件消息。如果我使用 console.log(last)它在里面工作,但我想不出减慢返回速度的正确方法。

products.diff = last.price是需要填充的一 block 才有效。有什么想法吗?

最佳答案

await 等待 Promise,但 Array.prototype.map 返回一个新的 Promise 数组。你需要用 Promise.all

包装它
let datasets = await Promise.all(changes.map(async (data) => {
let products = {};
let last = await models.prices.findOne({
where: {
productId: data.productId,
sourceId: data.sourceId
},
order: [['createdAt', 'DESC']],
limit: 1,
offset: 1
});

products.name = data.product.name;
products.price = data.price;
products.sku = data.product.sku;
products.source = data.source.name;
products.link = data.link;
products.diff = last.price;


return products;
}));

关于node.js - Promise { <pending> } - 尝试等待 .map,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46072479/

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