我是nodejs的初学者,此函数返回“ Promise {pending} 我非常感谢您的帮助。 谢谢
async function getCurrentUser(id){
try{
let user = User.findOne({id:id})
return user;
}catch(err){
return err;
}
}
答案 0 :(得分:4)
您错过了返回await
的某个函数前面的Promise
let user = await User.findOne({id:id})
Promise
是一个不变的异步操作,需要一些时间才能完成,因此您可以像以前一样使用async/await
或将promise
与.then
调用链接起来
User.findOne({ id })
.then((response) => {
// do sth with the resposne
});
建议您阅读YDKJS
系列的Async & Performance
完全重写代码:
async function getCurrentUser(id) {
try {
let user = await User.findOne({ id: id })
return user;
} catch (err) {
return err;
}
}
// getCurrentUser usage
async function doSth(){
let user = await getCurrentUser();
}
用法说明:
将async
放在函数前面使该函数返回类型成为一个诺言,无论您在函数内部返回什么内容,因此,使用这种函数的唯一两种方法就像使用promise
一样或者使用async
在另一个await
函数中使用它,或者使用.then()
链接函数
答案 1 :(得分:2)
你错过了等待
async function getCurrentUser(id){
try{
let user = await User.findOne({id:id})
return user;
}catch(err){
return err;
}