Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

129
Visualizações
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 Respostas
Responde à pergunta

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 Relatório

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 Relatório

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 Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda