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

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

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 Report

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 Report

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 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!