异步循环不返回值

时间:2018-06-25 13:02:32

标签: node.js async-await

我有一个异步循环来检查一个数组,如果找到一个特定值,它将循环另一个数组以匹配所建立的值。

所以我的第一个实现。我打开一个异步循环并从数据库中获取数据

mergedObject = [];
 array1.forEach(async (item) => {
  if (item.id == 'XXX') {
   const dbInfo = await readDB();

数据库信息,我想插入一个数组并构建一个json对象。

      dbInfo.forEach(async (itemDB) => {
    object.push({
      id,
      name,
      ..
      ..

在循环结束时,我将新对象与“旧”对象合并

  mergedObject = _.map(oldObject, (objs) => {
    _.assign(objs, _.find(object, {
      id: objs.id,
    }));
  });

我遇到的问题是,在forEach里面我正确地获得了日志。 但是,如果我想在forEach(array1)之外使用mergedObject,则会得到log: []

这是我第一次尝试使用异步。我以前使用过回调。 如何在forEach之外访问mergedObject?

1 个答案:

答案 0 :(得分:3)

异步/等待不会在forEach上运行。 用于in,for或传统for循环。 请参阅此Using async/await with a forEach loop