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

109
Vistas
Promesa de Javascript y bucle de eventos

Intenté ejecutar el siguiente código en Chrome y obtuve un resultado inesperado.

 <script> let p = new Promise((resolve, reject) => { setTimeout(() => { resolve('OK'); }, 1000) }) console.log(p); </script>

El objeto de promesa impreso en la consola de Chrome fue ingresar la descripción de la imagen aquí . (estado='cumplido', resultado='OK)

Pero el objeto de promesa impreso en la consola VScode fue ingresar la descripción de la imagen aquí . (estado='pendiente', resultado=indefinido)

Por lo que aprendí sobre el bucle de eventos de JS, dado que setTimeout() es asíncrono, el código 'resolve('OK')' no se ejecutará hasta que se completen los códigos sincrónicos.

Entonces, creo que el resultado de VScode es lo que debo esperar, ¿verdad? Pero, ¿qué causó los diferentes resultados entre Chrome y VScode? gracias ^^

about 4 years ago · Juan Pablo Isaza
2 Respuestas
Responde la pregunta

0

Tenga en cuenta que console.log en la consola de Chrome le muestra la versión más reciente de la variable

Esto no es necesariamente el mismo que el valor cuando se ejecutó realmente el programa.

Así que tenemos esta extraña situación. Prueba esto en la consola de Chrome.

 let p = new Promise((resolve, reject) => { setTimeout(() => { resolve('OK'); }, 1000) }) console.log("Value at time of running", JSON.stringify(p)) console.log("Value at time of seeing", p);

Lo que veo está abajo. Lo estoy pegando porque no puedo reproducirlo a través de la función de "fragmento" de Stack Overflow.

ingrese la descripción de la imagen aquí

Lo que esto significa

El segundo console.log produce una apariencia confusa. El resumen de la misma (con la flecha que apunta hacia abajo) dice que está pending . Pero el detalle de la misma, abajo, dice que se fulfilled .

Al hacer clic en el botón azul "i" se obtiene información. No puedo copiarlo y pegarlo fácilmente aquí, pero dice algo como "lo de la izquierda es lo que era en el momento de ejecutar console.log; lo de abajo es lo que es ahora".

Me he acostumbrado a esto a lo largo de los años, pero tengo que admitir que no es obvio para mí por qué tenemos ambos.

about 4 years ago · Juan Pablo Isaza Denunciar

0

supongo que en vsc, el estado de promesa aún está pendiente porque console.log() se activa antes de que se complete el tiempo de espera, podría intentar esto en su lugar

 const waitForTimeout = () => new Promise(resolve => setTimeout(() => resolve('OK'), 1000); (async function() { const promise = await waitForTimeout(); console.log(promise); })(); // self fulfilling function
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