下面是async (returnsundefined
)
userService.register = (username, password) => {
return bcrypt.hash(password, saltRounds, async(err, hash) => {
const newUser = new user({
username: username,
password: hash
})
return await newUser.save()
})
}
和.then
的代码是一样的,它可以正常工作
userService.register = (username, password) => {
return bcrypt.hash(password, saltRounds)
.then(hash => {
const newUser = new user({
username: username,
password: hash
})
return newUser.save()
})
}
这是记录的行为:
接受回调的异步方法,当回调未指定时返回Promise如果Promise支持可用
你在第一个例子中传递一个回调,所以bcrypt
不返回一个承诺。
async
:
userService.register = async (username, password) => {
const hash = await bcrypt.hash(password, saltRounds);
const newUser = new user({
username: username,
password: hash
})
return await newUser.save(); // or just `return newUser.save()`
}