我使用.map来映射一个新对象并将旧价格添加到地图中. 我正在使用Async / Await和我的数据图,这是我的代码: let datasets = await changes.map(async (data) = { let products = {}; let last = await models.prices
我正在使用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; });
更改是过去24小时内发现的所有价格变化.
last包含上一次特定产品的价格变化.
退货产品没有等待,所以我收到了Promise的垃圾邮件{< pending>消息.如果我使用console.log(最后)它在内部工作,但我无法找出减慢返回的正确方法.
products.diff = last.price是需要填写的有效内容.有任何想法吗?
等待Promise上的等待,但Array.prototype.map返回一个新的Promises数组.你需要用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; }));