Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

218
Visualizações
¿Cómo manejo las promesas dentro del bucle dentro de la función asíncrona en javascript?
async func(){ try{ let iter=[1,2,3] for (i of iter){ let result=await someFunc() pool.query("some query",arrWithResult) } }catch(err){console.log(err)} }

Aquí, el ciclo espera await. Pero no quiero eso. Necesito que el resultado y la consulta sql se ejecuten en secuencia, pero el ciclo debe continuar sin esperar. También necesito el valor de i actual al ejecutar la consulta. De lo contrario, simplemente insertaría estas promesas en la matriz y haría Promise.all (arr)

 async func(){ try{ let iter=[1,2,3] for (i of iter){ someFunc().then(body=>{pool.query("some query",arrWithResult).catch(err=>err) } }catch(err){console.log(err)} }

¿Esta bien? También pensé en hacer que la parte fuera asíncrona, pero ¿debería agregar otro bloque de captura de prueba?

Entonces, ¿cuál es la mejor manera para esto? O debo ir por entonces/atrapar. Al hacer Promise.all, el valor de iter se pierde.

about 4 years ago · Juan Pablo Isaza
2 Respostas
Responde à pergunta

0

Tal vez no lo estoy pensando (o usted lo está pensando demasiado), pero ¿por qué no simplemente refactorizaría en otra función asíncrona que haga lo que debe hacerse en cada iteración del ciclo, y luego Promise.all() la lista de promesas devueltas para dejar que se resuelvan?

Algo como esto:

 async func f1() { const iter = [ 1, 2, 3 ] ; return await Promise.all( iter.map(f2) ); } async func f2(i) { const result = await someFunc() ; return await pool.query( "some query" , arrWithResult ); }

La persona que llama solo necesita decir...

 const responses = await f1(); ```
about 4 years ago · Juan Pablo Isaza Relatório

0

No use un iterador var para esto; este es un trabajo para Array.map()

 Promise.all([1,2,3].map(i => someFunc().then(body => pool.query("some query",arrWithResult).catch(err=>err));
about 4 years ago · Juan Pablo Isaza Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda