我面臨複雜的承諾鏈,看起來結果並不等待承諾的結束。循環中的鏈接承諾
return Promise.all([
Radar.newRadar(1),
Radar.newRadar(2),
Radar.newRadar(3)
])
.then(newRadarIds => {
let RadarNotes = [];
return Promise.all([
_.map(newRadarIds, (radar_id) =>{
return Promise.all([
Radar.init(radar_id)
])
.then(kpis => {
return Promise.all([
Radar.addKpis(radar_id.radar_id, ...)
])
.then(radarAddKpi => {
RadarNotes.push({
year : radar_id.year,
data : kpis[0].data});
console.log('in map')
// return {
// year : radar_id.year,
// data : kpis[0].data}
})
.catch(err => {
console.error(err);
})
})
}) //end map
])
.then(result => {
console.log('her222e')
res.json(result)
})
.catch (err => {
console.error(err);
})
})
.catch(error => {
console.error(error);
})
我在'in map'之前得到'here'的輸出。目標是填充數組並通過res.json
調用將其發送給客戶端。
我錯過了什麼?
不'Radar.init(radar_id)'返回一個承諾?那麼'Radar.addKpis(radar_id.radar_id,...)'是否會返回一個承諾? –
'Radar.addKpis(radar_id.radar_id,...)'看起來很時髦,更別提在'Promise.all([])' –