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

156
Vistas
Manera correcta de manejar el máximo de trabajos asincrónicos/en espera independientes y dependientes (Promesas)

Tengo cuatro procesos asincrónicos que obtienen de diferentes fuentes, a saber, el proceso A, B, C y D.

Los procesos A, B y C son independientes entre sí, pero D depende de los datos de C.

En la medida de lo posible, quiero que A y B se obtengan de forma independiente en C y D, pero quiero conservar el resultado de A, B, C y D para el siguiente procedimiento.

Así que estoy tratando de encontrar la forma correcta de expresar esta funcionalidad.

Algo como

 const results = await Promise.allSettled([A, B, C]); const resultD = await D(results[2].value);

significa que estoy esperando para realizar D hasta que A, B, C hayan terminado, pero en este caso, A o B pueden tomar mucho más tiempo que C.

Igualmente,

 const results = await Promise.allSettled([A, B, C, D(await C)]);

¿No parece del todo correcto? No quiero que C se realice dos veces, y también quiero conservar el resultado.

¿Cuál sería la forma correcta de resolver esto con elegancia?

about 4 years ago · Juan Pablo Isaza
1 Respuestas
Responde la pregunta

0

Puede agrupar C y D y resolverlo con A y B

Entendamos el fragmento a continuación:

Considere las funciones A , B , C y D equivalentes a la obtención de cuatro API diferentes. Además, observe cómo D necesita algunos datos, que obtendría de C .

Y en la función main estamos resolviendo A , B independientemente y estamos resolviendo D solo después de que C haya terminado.

 const sleep = (delay, data) => new Promise(res => setTimeout(() => res(data), delay)); const A = () => sleep(100).then(() => "A") const B = () => sleep(200).then(() => "B") const C = () => sleep(100).then(() => "C") const D = (inp) => sleep(100).then(() => inp + "D") function main() { const promises = [A(), B(), C().then(res => D(res))]; Promise.all(promises).then(console.log); } main();

También puede usar Promise.allSettled pero asegúrese de comprender la diferencia entre allSettled y all .

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