Este es mi primer post :)
Entonces, lo que estoy tratando de hacer es recorrer las claves de un objeto con un bucle forEach () y para cada elemento, insertar valores específicos en una matriz. Luego, después del ciclo, resuelva la matriz que contiene todos los valores enviados.
Según tengo entendido, es difícil obtener valores del contexto forEach(). ¿Hay alguna manera de hacer algo así?
Aquí hay un ejemplo de código de lo que estoy tratando de hacer:
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 returnEn este momento, devuelve una matriz vacía.
El resultado esperado debería ser algo como esto en su lugar:
[ 'Object: key1 | someOtherKey1', 'Object: key2 | someOtherKey2', 'Object: key3 | someOtherKey3', ... ]Muchas gracias por sus respuestas !
¡Felicitaciones por tu primera publicación!
Sin embargo, es una pregunta súper clásica, cómo usar una función asíncrona en un bucle. Con .forEach no puede, pero puede usar await en un bucle for :
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); El uso de await probablemente requerirá que su función se marque como async ( async function doSomething() { ... )