繁体   English   中英

将此基于 Promise 的代码转换为 Async / Await?

[英]Convert this Promise based code into 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!");
  });
});

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

大概是这样的:

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!");
});

您可以通过在调用哈希函数时简单地添加 await 来做到这一点

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

  try {
    const hash = await bcrypt.hash(password, 10);
    User.create({
      firstName: firstName,
      lastName: lastName,
      email: email,
      password: hash,
    });
  } catch (e) {
    // --- "your .catch() method would go here" ---
  }

  res.json("User created!");
});

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM