node.js函数返回Promise {<pending>},为什么呢?

时间:2020-08-26 06:51:07

标签: node.js async-await

我是nodejs的初学者,此函数返回“ Promise {pending} 我非常感谢您的帮助。 谢谢

async function getCurrentUser(id){
try{
    let user = User.findOne({id:id})
    return user;

}catch(err){
    return err;
}     
}

2 个答案:

答案 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;
}     
相关问题