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

164
Visualizações
¿Por qué se ejecuta el código de espera antes que el código de sincronización?

Tengo una función de usuario de registro que realmente no entiendo cómo funciona...

 module.exports.signupUser = async (req, res) => { let email = req.body.email; let password = req.body.password; if(!validator.isEmail(email)) { res.status(400).json({ "message": "Please enter a valid email!" }).end(); } else if(!validator.isLength(password, {min:6})){ res.status(400).json({ "message": "Password must have at least 6 characters!" }).end(); } else { const salt = bcrypt.genSaltSync(10); const hashedPassword = await bcrypt.hash(password, salt); let params = [email, hashedPassword]; console.log(hashedPassword); let query = 'insert into users (email, password) values (?,?)'; connection.query(query, params, (err, result, fields) => { if(err && err.code === 'ER_DUP_ENTRY') { res.status(400).json({ "message": "There is an account already associated with this email adress!" }).end(); } else { res.status(200).json({ "message": "User created!" }).end(); } }); }

}

Entonces, en el último caso, uso await bcrypt.hash (contraseña, sal) para cifrar mi contraseña. Soy nuevo en JS, pero aún así entiendo que await ejecuta el código de forma asincrónica, por lo que console.log (hashedPassword) no debería devolverme la contraseña cifrada porque este registro se ejecutará antes que el hash real. ¿Alguien puede explicarme qué está pasando realmente?

about 4 years ago · Juan Pablo Isaza
2 Respostas
Responde à pergunta

0

const hashedPassword = await bcrypt.hash(password, salt); console.log(hashedPassword);

Si usa la palabra clave await, nodejs esperará a que se resuelva la promesa antes de pasar a la siguiente línea en la función asíncrona. El resultado de su console.log será la contraseña cifrada.

Si no usa la palabra clave await, el nodo comenzará a resolver la promesa pero no esperará a que termine de resolverse antes de pasar a la siguiente línea. El resultado de su console.log será Promise {pendiente}

about 4 years ago · Juan Pablo Isaza Relatório

0

await ejecuta el código sincrónicamente. Entonces, en su caso, await esperará la ejecución de bcrypt.hash .

Para mayor claridad, la función bcrypt.hash devuelve una promise y ahora tenemos dos opciones aquí.

1. Esperar a que se resuelva la promesa

 const hashedPassword = await bcrypt.hash(password, salt); console.log(hashedPassword);

hashedPassword contendrá el resultado real que necesitamos.

2. Manejar la resolución de la promesa usando then

 bcrypt.hash(password, salt).then(hashedPassword => { console.log(hashedPassword); })

Como la función bcrypt.hash devuelve una promesa, debemos manejar el resto del código dentro de un bloque luego, ya que solo devolverá el valor una vez que la función resuelva la promesa.

En caso de que desee ejecutar su código de asynchronously , debe eliminar la palabra clave await que espera a que se resuelva la promesa antes de pasar a la siguiente línea.

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