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

322
Visualizações
A pesar de Await, la función se ejecuta instantáneamente.

Soy nuevo en Javascript y tengo problemas para lidiar con Async/Await. Aquí está mi código, según tengo entendido, agregar await pone en espera la función Aquí, dentro de foo, debería poner en espera el código en checker() y pasar a ejecutar los comandos fuera de foo , pero en su lugar ejecuta la función checker() antes console.log('the end') .

 function checker() { console.log('inside checker'); return "Ok" } async function foo() { let a = await checker(); // Shouldn't using await here let next line outside foo to execute console.log("mid", a); } console.log(1); foo(); console.log('the end');
 // Output coming is: //1 //inside checker //the end //mid Ok

¿Puede alguien decirme qué propiedades hacen que se comporte de esta manera? Sé que hay algo que me estoy perdiendo, pero no puedo entender qué.

about 4 years ago · Juan Pablo Isaza
3 Respostas
Responde à pergunta

0

Su función de checker no es asíncrona, pero también necesita hacer algo que sea realmente asíncrono dentro de ella.

Por el momento, todas las promesas se resuelven instantáneamente, lo que no brinda la oportunidad de ejecutar código posterior.

En realidad, necesitamos crear una promesa, simplemente definir una función como asíncrona no es suficiente a menos que algo dentro devuelva una promesa, por lo que devolvemos una nueva promesa que se resuelve mediante la devolución de llamada setTimeout .

Tenga en cuenta que el período de tiempo de espera es 0 , lo cual es suficiente para hacer que se invoque el bucle de eventos de javascript, lo que permite que se procesen las siguientes declaraciones después de llamar a foo . Cambiar esto a cualquier número entero positivo cambiará el tiempo de ejecución pero no el orden de los eventos.

 function checker() { return new Promise(resolve => { setTimeout(() => resolve('Ok'), 0) }) } function foo() { let a = checker(); console.log(new Date(), "mid"); return a } (async () => { console.log(new Date(), 'start'); foo().then(v => console.log(new Date(), 'eventually', v)); console.log(new Date(), 'the end'); })()

about 4 years ago · Juan Pablo Isaza Relatório

0

No definiste tu función como asíncrona

comprobador de funciones () { console.log ('comprobador interno'); devolver "Ok" }

Debería ser

verificador de funciones asíncronas() { console.log('inside checker'); devolver "Ok" }

about 4 years ago · Juan Pablo Isaza Relatório

0

await le dice a su código que espere a que termine la función. Si desea continuar ejecutándose sin esperar, no debe usar la palabra clave await . async también debe estar en la función que desea ejecutar de forma asíncrona, en este caso, checker()

 async function checker() { console.log('inside checker'); return "Ok" } function foo() { let a = checker(); console.log("mid", a); } console.log(1); foo(); console.log('the end');
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