如何使用.push一个数组来保存.map()以外的异步?

时间:2018-03-27 22:49:34

标签: javascript loopbackjs array.prototype.map

我有一个名为codigo的数组,我.push.map()内的一些数据。 当我在console.log(codigo);中放置map()时,结果是正确的,但是当我将控制台日志放在.map()之外时,结果为空。

let pre = '';
let cod = [];
devPre.map(async (item)  => {
  pre = await models.pres.findOne({
    where: {
      id: item.pres_id,
    },
  });
  cod.push(pre.codPre);
  console.log(cod); // This return the correct values
});
console.log(cod); // This return [], this is my error

我需要外部console.log返回正确的值,就像其他console.log一样。

1 个答案:

答案 0 :(得分:2)

等待你正在检索的所有值的Promise.all:

const allPromises = devPre.map((item)  => {
  return models.pres.findOne({
    where: {
      id: item.pres_id,
    },
  });
});
const pres = await Promise.all(allPromises);
const cod = pres.map(pre => pre.codPre);