Saltar al contenido

esperar con array foreach que contiene asíncrono espera

Hacemos una verificación exhaustiva cada enunciado en nuestra página web con la meta de mostrarte en todo momento la información con la mayor veracidad y certera.

Solución:

Utilice Array.prototype.map y Promise.all:

async function procesMultipleCandidates (data) 
  let generatedResponse = []
  await Promise.all(data.map(async (elem) => 
    try 
      // here candidate data is inserted into  
      let insertResponse = await insertionInCandidate(elem)  
      // and response need to be added into final response array 
      generatedResponse.push(insertResponse)
     catch (error) 
      console.log('error'+ error);
    
  ))
  console.log('complete all') // gets loged first
  return generatedResponse // return without waiting for process of 

O usa un for/of bucle si no desea que el bucle se ejecute en paralelo:

async function procesMultipleCandidates (data) 
  let generatedResponse = []
  for(let elem of data) 
    try 
      // here candidate data is inserted into  
      let insertResponse = await insertionInCandidate(elem)  
      // and response need to be added into final response array 
      generatedResponse.push(insertResponse)
     catch (error) 
      console.log('error'+ error);
    
  
  console.log('complete all') // gets loged first
  return generatedResponse // return without waiting for process of 

Array.prototype.forEach() intenta ejecutarse secuencialmente y es posible que no siempre obtenga el resultado esperado.

Array.prototype.map() es el ampliamente utilizado para crear Promesas usando datos y luego resuelto usando await Promise.all([])

usando .map() función, todas las promesas se resuelven en paralelo y si llama a una API, puede terminar obteniendo error 429: Too many Requests

Para ejecutar todas las promesas secuencialmente, puede usar for ...of.

const array1 = ['a', 'b', 'c'];

for (const element of array1) 
  console.log(element);

Referencia MDN

Tienes la opción de avalar nuestra función fijando un comentario y dejando una puntuación te damos las gracias.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *