首页 > 解决方案 > 将此基于 Promise 的代码转换为 Async / Await?

问题描述

一位同事想将一个项目的后端代码重构为 Async/Await,我几乎没有使用过。

我知道它是如何工作的,但是一开始这样写代码有点奇怪。

router.post("/register", async (req, res) => {
  const { firstName, lastName, email, password } = req.body;

  bcrypt.hash(password, 10).then((hash) => {
    User.create({
      firstName: firstName,
      lastName: lastName,
      email: email,
      password: hash,
    });
    res.json("User created!");
  });
});

例如,您将如何重构这段简单的代码?谢谢!!!

标签: javascriptasynchronousasync-awaitpromise

解决方案


大概是这样的:

router.post("/register", async (req, res) => {
    const { firstName, lastName, email, password } = req.body;
    
    const hash = await bcrypt.hash(password, 10);
    User.create({
        firstName: firstName,
        lastName: lastName,
        email: email,
        password: hash,
    });
    res.json("User created!");
});

推荐阅读