将此基于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!");
});
});

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

可能是这样的:

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

您只需在调用散列函数时添加wait即可完成此操作

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

最新更新