我知道這是一個關於stackoverflow的熱門話題,但是我在用promise函數填充外部對象時遇到了一個問題。用承諾推送到映射函數內部的外部對象
所以基本上我想做的事:
- 通過一個承諾得到我想要在這個陣列與地圖功能遍歷
- 迭代對象的數組。呼叫在每次迭代
- 一個承諾之後第二個承諾解決我要推一個ID,承諾到一個數組
當然,我不能用一個全局對象的結果,因爲承諾將不會在正確的範圍。我也嘗試過使用Bluebird Promise.map函數,但是這種方式我不能將對象推到對象上,而不是隻有第二個promise結果。
這是我的代碼到目前爲止。 PromiseTwo應填入一個對象,我想在res.json函數來顯示(這是一個Express /應用的NodeJS)
let promise = actie.groupActies()
let akties = {}
promise.then(function(aktieMaanden) {
let values = aktieMaanden.forEach((aktie) => {
let aktieId = aktie['_id']
let artikelen = aktie['artikelen']
let promiseTwo = order.getActieArtikelenOmzet(artikelen)
promiseTwo.then(function(orders) {
akties[aktieId] = orders
return akties
})
})
return akties
}).then((akties) => {
res.json({ message: "Omzet voor aktie", akties: akties })
})
是超好,爲表示感謝。訣竅是在.the(訂單=> [actie._id,訂單],它返回的對象 我甚至可以將其與更小的Promise.map寫: \t'actie.groupActies() \t。然後(acties => Promise.map(acties,actie => \t order.getActieArtikelenOmzet(actie.artikelen) \t。然後(訂單=> [actie._id,訂單]) \t)) \t。然後(結果=> { \t \t res.json({消息: 「Omzet VOOR aktie」,akties:結果}) \t})' –
@patrick steenks那一個好的解決方案太。 Ypu可以作爲未來讀者的答案......(實際上,我的解決方案確實會返回一個二維數組,而不是一組對象;) –
這樣做,謝謝。現在正在處理返回一組對象:) –