如何将元素推出 forEach() 上下文?

How can I push elements out of a forEach() context?

这是我第一次 post :)

所以我想做的是使用 forEach() 循环遍历对象的键,并为每个元素将特定值推送到数组中。然后在循环之后,解析包含所有推送值的数组。

据我了解,很难找出 forEach() 上下文的值。有没有办法做这样的事情?

这是我正在尝试做的代码示例:

    some function returning a promise
    ... 
    ...

    let promisesArray = [];

    //Loop on each object from data and do whatever
    ObjectJSON.array.forEach((object) => {
      if (object.key === "foo") {
        functionBar()
          .then((response) => {
            promisesArray.push(
              `Object: ${object.key}  |  ${object.someOtherKey}`
            );
          })
          .catch((error) => {
            reject(error);
          });
      }
    });

    resolve(promisesArray);

  }); //end of promise's return

现在,它 returns 一个空数组。

预期的结果应该是这样的:

[
  'Object: key1  |  someOtherKey1',
  'Object: key2  |  someOtherKey2',
  'Object: key3  |  someOtherKey3',
  ...
]

非常感谢您的回答!

恭喜您获得第一个 post!

虽然是一个超级经典的问题,如何在循环中使用异步函数。使用 .forEach 你不能,但你可以在 for 循环中使用 await :

let promisesArray = [];

for (let object of ObjectJSON.array) {
  if (object.key !== "foo") continue;

  const response = await functionBar();

  promisesArray.push(
    `Object: ${object.key}  |  ${object.someOtherKey}`
  );
}

resolve(promisesArray);

使用 await 可能需要将您的函数标记为 async (async function doSomething() { ... )