使用回送,我有一个简单的for循环,在其中执行findOne:

let my_data = [];
Orders.forEach(function(order,idx) {

  let postalcode = order.toJSON().customer.postal_code;
  let ps4 = postalcode.slice(0,4);

  app.models.postalcode.findOne({where: {postal_code: parseInt(ps4)},include: ['depot']}, function (err, Postalcode) {
    if (err) {
      winston.error('Could not load postalcode %s due to error %s: ', ps4, err.message);
    } else {

      if (Postalcode) {
        let depot = Postalcode.toJSON().depot;
        if (!depot) {
          //
        } else {
          let depot_city = depot.city;
          if (cities_to_process.indexOf(depot_city) > -1) {
            my_data.push(order);
          } else {

          }
        }
      } else {
        winston.warn('Could not find postal code %s', ps4)
      }
    }
  });
});

console.log(my_data);


在for循环之后,我想对my_data中收集的数据进行一些处理。由于findOne似乎是异步的,因此首选的方式是什么?

最佳答案

使用async库。使用async.eachSearies()循环循环async函数并获得所需的输出将很容易。您可以在这里参考link

09-25 20:31