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

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

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