异步映射 - 早期执行回调

时间:2017-02-24 00:37:00

标签: mongodb async.js

在此异步映射中,最终回调参数在事件'中注销之前被调用。 (我只是使用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);
});
};

1 个答案:

答案 0 :(得分:0)

Find是一个异步操作。你能做的是以下几点:

let promise = Model.Events.find(....)

promise.then((error,data) => {
   console.log('finish');
})

这应该在查找内部的任何代码之后调用。