首页 > 解决方案 > Loopback:如何在包含异步方法的 for 循环中收集数据?

问题描述

使用环回,我有一个简单的 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 似乎是异步的,这样做的首选方式是什么?

标签: node.jsloopbackjs

解决方案


您可以在 forEach 中创建新的承诺,例如:

let Y = X.forEach((item) => {
  return new Promise((resolve, reject) => {
    resolve('done')
  })
})

Promise.all(y, callback)

推荐阅读