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

145
Vistas
La promesa de JavaScript no está congelada y se ejecuta la siguiente línea

Tengo una función que devuelve una promesa:

 const validateForm = () => { return new Promise((resolve, reject) => { // code here takes time return resolve('valid'); }); }

Y uso esta promesa de esta manera:

 validateForm() .then(function(result) { console.log('form is valid'); }) console.log('line after promise');

Espero ver esta salida:

el formulario es valido
línea después de la promesa

Pero veo esta salida:

línea después de la promesa
el formulario es valido

¿Cómo debo corregir este código para obtener el primer resultado? ¿Cómo congelar el código para no ejecutar líneas después de la promesa hasta que la promesa se resuelva o se rechace?

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

0

Cuando se usan promesas, todo el código en un "nivel" dado se ejecuta primero, luego se ejecutan async/promises, que luego pueden desencadenar entonces.

 1 validateForm() 2 .then(function(result) { 3 console.log('form is valid'); 4 }) 5 6 console.log('line after promise');

En su código, esencialmente iría a la línea 1 y 6, luego a la línea 2, 3, 4 cuando se resuelva la promesa.

Está intentando forzar el código asincrónico para que se ejecute de forma sincrónica, lo que simplemente no funciona. Si desea el resultado esperado, todo tiene que estar en un entonces:

 validateForm() .then(function(result) { console.log('form is valid'); }).then(function () { console.log('line after promise'); });

O podría estar en el mismo entonces() justo en la siguiente línea. Pero no puede estar simplemente ahí fuera.

O podría confundirse al ver cosas que usan async/await. Si está en una función asíncrona, puede hacer:

 await validateForm() .then(function(result) { console.log('form is valid'); }) console.log('line after promise');

Lo cual es básicamente azúcar sintáctico para lo anterior (aunque tiende a ser la preferencia de las personas, incluida la mía).

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