Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

124
Vistas
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 Respuestas
Responde la pregunta

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 Denunciar

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 Denunciar

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 Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda