javascript - 如何使用 .push 保存数组以在 .map() 之外异步读取?

标签 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 一样。

最佳答案

等待 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);

关于javascript - 如何使用 .push 保存数组以在 .map() 之外异步读取?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49523619/

相关文章:

javascript - 冒号(: ) mean in this javascript line?

javascript - LoopBack "group by"能用mySQL吗?

javascript - react 函数返回未定义

javascript - 使用 map() 的意外逗号

javascript - 如何获取跨度中文本的高度和宽度而不是整个跨度的宽度和高度

javascript - 在 Firefox 中移动 SVG 元素失败

node.js - Strongloop 在 afterRemote 方法中创建相关模型对象

node.js - 环回 "hasManyThrough"关系。在哪里添加?

javascript - 在嵌套的 .map 函数中为 <li> 提供唯一键

JavaScript 表单验证 2 个字母 1 个数字