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

262
Views
Orden de ejecución de las promesas de JavaScript consecutivas

En el siguiente código:

 new Promise((resolve, reject) => { asyncFunc1(resolve,reject); }) .then((result) => { // do then1 stuff }) new Promise((resolve, reject) => { asyncFunc2(resolve,reject); }) .then((result) => { // do then2 stuff })

¿Se asyncFunc1() de .then() antes de que se asyncFunc2() ?

¿O ambos se ejecutarán (casi) simultáneamente, y sus then() se ejecutarán justo cuando regresen?

Si el segundo no espera al primero, ¿hay alguna forma de hacerlo que no sea mover asyncFunc2() a asyncFunc1() 's .then() ?

about 4 years ago · Juan Pablo Isaza
1 answers
Answer question

0

Ambas promesas se ejecutarán (casi) simultáneamente, porque ese es exactamente uno de los puntos fuertes de Javascript: debido a su diseño basado en devolución de llamadas, puede iniciar y esperar muchas funciones asincrónicas (en forma de promesas) en paralelo, sin la necesidad de que el desarrollador se preocupe por el manejo complejo de subprocesos o algo por el estilo.

Si desea que asyncFunc2 espere a que se complete asyncFunc1 , debe colocarse dentro del bloque " then " de asyncFunc1 .

Puede verlo fácilmente y probarlo simulando dos funciones que toman un tiempo definido (usando setTimeout), por ejemplo:

 function resolveAfter2Seconds() { return new Promise(resolve => { setTimeout(() => { resolve('resolved at ' + new Date().toISOString()); }, 2000); }); } function resolveAfter3Seconds() { return new Promise(resolve => { setTimeout(() => { resolve('resolved at ' + new Date().toISOString()); }, 3000); }); } function execPromises() { console.log('calling at ' + new Date().toISOString()); resolveAfter2Seconds().then(result => console.log(result)); resolveAfter3Seconds().then(result => console.log(result)); } execPromises();

Verá en la salida de la consola que el primero terminará 2 segundos después de iniciar el script, el otro 3 segundos después de iniciar el script (y no después de 2 + 3 = 5 segundos).

Si desea hacer que asyncFunc2 espere a asyncFunc1 sin necesidad de then , puede usar las palabras clave async / await .

En mi ejemplo, la función execPromises se vería así ( asyncFunc2 ejecutado después de completar asyncFunc1 !):

 async function execPromises() { console.log('calling at ' + new Date().toISOString()); const resultA = await resolveAfter2Seconds(); console.log(resultA); const resultB = await resolveAfter3Seconds(); console.log(resultB); }
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!