Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

149
Visualizações
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 Respostas
Responde à pergunta

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 Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda