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

119
Views
Estoy confundido con async-await

Mi código debe esperar de 4 a 4 segundos para que la promesa se ejecute en un total de 8 segundos, pero termina en solo 4 segundos. ¿Por qué? ¿Dónde estoy pensando mal?

 // a promise let promise1 = new Promise(function (resolve, reject) { setTimeout(function () { resolve('Promise resolved1')}, 4000); }); let promise2 = new Promise(function (resolve, reject) { setTimeout(function () { resolve('Promise resolved2')}, 4000); }); // async function async function asyncFunc() { // wait until the promise resolves let result1 = await promise1; let result2 = await promise2; console.log(result1); console.log(result2); } // calling the async function asyncFunc();

 //expected output **//wait for 4 seconds first** Promise resolved1 **//wait for more 4 seconds** Promise resolved2 //output //waits for 4 seconds Promise resolved1 Promise resolved2
about 4 years ago · Juan Pablo Isaza
3 answers
Answer question

0

Al usar async/await, su código asincrónico comenzará a ejecutarse, pero su resolución volverá al código sincrónico solo cuando use la palabra clave await. Cuando tiene varias funciones asincrónicas, solo se ejecutarán secuencialmente cuando tenga un código sincrónico ejecutándose entre ellas porque cuando invoca la función es cuando la parte asincrónica del código comienza a ejecutarse. En este caso, el temporizador se inicia cuando invoca la función, por lo que debe esperar a que se resuelva el primer temporizador antes de iniciar el segundo temporizador.

Vea este fragmento de código y consulte los ejemplos en este enlace para aclararlo.

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/async_function

 async function sequentialStart() { console.log('==SEQUENTIAL START==') // 1. Execution gets here almost instantly const slow = await resolveAfter2Seconds() console.log(slow) // 2. this runs 2 seconds after 1. const fast = await resolveAfter1Second() console.log(fast) // 3. this runs 3 seconds after 1. }

El otro problema es que cuando declara sus funciones, las ejecuta inmediatamente y asigna sus valores a las variables. Con una modificación mínima de su código, debe configurar sus funciones como se muestra a continuación y solo llamarlas una vez que esté listo para iniciar el temporizador.

 // a promise let promise1 = function () { return new Promise(function (resolve, reject) { setTimeout(function () { resolve('Promise resolved1'); }, 4000); }); }; let promise2 = function () { return new Promise(function (resolve, reject) { setTimeout(function () { resolve('Promise resolved2'); }, 4000); }); }; // async function async function asyncFunc() { // wait until the promise resolves let result1 = await promise1(); console.log(result1); let result2 = await promise2(); console.log(result2); } // calling the async function asyncFunc();
about 4 years ago · Juan Pablo Isaza Report

0

new Promise(executor)

ejecutor, Una función a ser ejecutada por el constructor. Recibe dos funciones como parámetros: resolutionFunc y rechazoFunc. Cualquier error arrojado en el ejecutor hará que se rechace la promesa y se descuide el valor de retorno. La semántica de ejecutor se detalla a continuación.

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Promise/Promise

 // a promise let promise1 = () => new Promise(function (resolve, reject) { setTimeout(function () { resolve('Promise resolved1')}, 4000); }); let promise2 = () => new Promise(function (resolve, reject) { setTimeout(function () { resolve('Promise resolved2')}, 4000); }); // async function async function asyncFunc() { // wait until the promise resolves let result1 = await promise1(); console.log(result1); let result2 = await promise2(); console.log(result2); } // calling the async function asyncFunc();

La promesa 1 y 2 ya se está ejecutando cuando declaró. Si desea el resultado que espera, debe codificar como se indicó anteriormente.

about 4 years ago · Juan Pablo Isaza Report

0

Una defensa simple de asincrónica espera cuando declara una función async . La función se declarará como asyncronasly , el valor predeterminado de la función es syncronasly . la función asyncronas ejecuta el nivel de bloque (línea por línea) cuando agrega await en una promesa (función que devuelve valor) debido a que el compilador de await primero resolvió la promesa y luego se ejecuta en la siguiente línea de código

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!