Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

321
Vistas
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 Respuestas
Responde la pregunta

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 Denunciar

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 Denunciar

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 Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda