Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

158
Views
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 answers
Answer question

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 Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!