Javascript 使用承诺从映射函数内部推送到外部对象
我知道这是有关stackoverflow的热门话题,但我在使用promise函数填充外部对象时遇到了一个问题 所以基本上我想做的是:Javascript 使用承诺从映射函数内部推送到外部对象,javascript,promise,bluebird,Javascript,Promise,Bluebird,我知道这是有关stackoverflow的热门话题,但我在使用promise函数填充外部对象时遇到了一个问题 所以基本上我想做的是: 通过一个promise获得我想要迭代的对象数组 使用map函数迭代此数组。在每次迭代中调用承诺 在第二个承诺解决后,我想将一个Id和承诺的结果推送到一个数组中 当然,我不能使用全局对象,因为承诺不在正确的范围内。我还尝试了Bluebird Promise.map函数,但这样我就无法将对象推到比第二个Promise结果更高的位置 这是到目前为止我的代码。Prom
- 通过一个promise获得我想要迭代的对象数组
- 使用map函数迭代此数组。在每次迭代中调用承诺
- 在第二个承诺解决后,我想将一个Id和承诺的结果推送到一个数组中
这里的主要思想是使用Promise.all,这样它只有在所有订单完成后才能继续。使用Promise.map详细说明Jonas w的答案,并绘制以下作品:
actie.groupActies()
.then(acties =>
Promise.map(acties, actie =>
order.getActieArtikelenOmzet(actie.artikelen)
.then(orders => [actie._id,orders])
)
)
.then(results => {
res.json({ message: "Omzet voor aktie", akties: results})
})
是的,太好了,谢谢你。诀窍在于.orders=>[actie.\u id,orders],它返回了一个对象。我甚至可以用Promise.map:
actie.groupActies().then(acties=>Promise.map(acties,actie=>order.getActieArtikelenOmzet(actie.artikelen)。然后(orders=>[actie.\u id,orders])。然后(results=>{res json({消息:“Omzet voor aktie”,akties:results})
@patrick steenks这也是一个很好的解决方案。Ypu可以作为未来读者的答案…(实际上我的解决方案返回的是2d数组,而不是对象数组;)谢谢。现在正在返回对象数组:)
actie.groupActies()
.then( acties => Promise.all(
acties.map(actie =>
order.getActieArtikelenOmzet(actie.artikelen)
.then(orders => [actie._id,orders])
)
))
.then(results=> res.json({results}))
actie.groupActies()
.then(acties =>
Promise.map(acties, actie =>
order.getActieArtikelenOmzet(actie.artikelen)
.then(orders => [actie._id,orders])
)
)
.then(results => {
res.json({ message: "Omzet voor aktie", akties: results})
})