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

127
Visualizações
Promise.all no espera para completar las solicitudes
await Promise.all( endpoints.map((endpoint) => this.httpService.get(endpoint).pipe( map((response) => { return response.data['result']; }), ), ), ).then( axios.spread((...allData) => { allData.forEach((res) => res.subscribe((res) => { apiFeedBack.push(res); console.log(apiFeedBack); }), ); }), );

Durante la depuración, se salta la ejecución de promise.all y devuelve directamente undefined como respuesta. Que me estoy perdiendo aqui

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

0

Debe devolver la matriz de promesas recibidas de la función de mapa como se muestra a continuación:

 await Promise.all( return endpoints.map((endpoint) => this.httpService.get(endpoint).pipe( map((response) => { return response.data['result']; }), ), ), ).then( axios.spread((...allData) => { allData.forEach((res) => res.subscribe((res) => { apiFeedBack.push(res); console.log(apiFeedBack); }), ); }), )
about 4 years ago · Juan Pablo Isaza Relatório

0

En primer lugar, cuando esté usando await, no use then . Así es como sería:

 const promiseAll = async () => { try { const res = await Promise.all(promises); return res; } catch (e) { console.error(e); } }

Ahora, necesitamos obtener los valores de las promesas usando await. Además, estaría limpio si lo escribieras de esta manera:

 const endpoints_Promises = endPoints.map(endPoint => { return new Promise((resolve, reject) => { this.httpService.get(endpoint).pipe( map((response) => { resolve(response.data['result']); }) ) }) }) try { const responses = await Promise.all(endpoints_Promises); responses.forEach(data => console.log(data)); } catch (e) { console.error(`Error occured: ${e}`); }
about 4 years ago · Juan Pablo Isaza Relatório

0

amigos, como sabrán, @nestjs/axios en NestJS devuelve observables en lugar de promesas, sin embargo, este no es el caso de axios .

Entonces, en caso de que necesite hacer observable asíncrono, deberá convertirlo en promesa, aunque no es una forma recomendada y .toPromise() está obsoleto en la última versión de @nestjs/axios .

 Promise.all( return endpoints.map((endpoint) => this.httpService.get(endpoint).toPromise(), ), ).then((responses)=> { // here you get the resolved promises responses array })

Consulte esto para obtener más información sobre el cumplimiento de Promise.all .

Consulte esto para obtener más información si debe usar observable async/await ¿Es una buena práctica usar Observable con async/await?

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