0
在這個異步映射中,最終回調參數在註銷'in events'之前被調用。 (我只是使用console.log來避免過度複雜化)...異步映射 - 早期執行回調
因此,我登錄'最後一個cb'的地方是在所有'在地圖'中但在事件發生之前獲取日誌。如何阻止最終的回調直接射擊?
const addEvents = (seasons, cb) => {
async.map(seasons, (season, seasonCb) => {
console.log('in map');
Model.Events.find({season_id: season._id.toString()}, (err, events) => {
if (err) {
console.log('in err');
return seasonCb(err);
}
console.log(events, 'events');
});
console.log('finish');
seasonCb(null, season);
}, (err) => {
if (err) {
console.log('in err');
return cb(err);
}
console.log(seasons, 'in last cb');
cb(null, seasons);
});
};
在事件之前也完成了嗎? –
是的,它會登錄地圖,然後在每次迭代之後直接完成,然後在上一次cb中,然後事件持續。 –
通過將seasonCb(null,season)移入find函數並將季節添加爲最後一個函數的參數來解決此問題 –