在此异步映射中,最终回调参数在事件'中注销之前被调用。 (我只是使用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);
});
};
答案 0 :(得分:0)
Find是一个异步操作。你能做的是以下几点:
let promise = Model.Events.find(....)
promise.then((error,data) => {
console.log('finish');
})
这应该在查找内部的任何代码之后调用。