首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >node.js函数返回Promise { <pending> },为什么?

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

Stack Overflow用户
提问于 2020-08-26 14:51:08
回答 2查看 58关注 0票数 0

我是nodejs的初学者,这个函数返回"Promise {pending}“,感谢大家的帮助。谢谢

代码语言:javascript
运行
复制
async function getCurrentUser(id){
try{
    let user = User.findOne({id:id})
    return user;

}catch(err){
    return err;
}     
}
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2020-08-26 14:55:05

您缺少某些返回Promise的函数前面的await

代码语言:javascript
运行
复制
 let user = await User.findOne({id:id})

Promise是一个不可变的异步操作,需要时间才能完成,因此您可以像以前那样使用async/await,也可以像这样使用.then调用来链接promise

代码语言:javascript
运行
复制
User.findOne({ id })
.then((response) => {
  // do sth with the resposne
});

推荐您阅读YDKJS系列中的Async & Performance

完全重写代码:

代码语言:javascript
运行
复制
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,无论您在其中返回的是什么,因此使用此类函数的两种方法就像使用promise一样:使用await在另一个async函数中使用它,或者使用.then()链接函数

票数 4
EN

Stack Overflow用户

发布于 2020-08-26 14:54:59

U缺少等待

代码语言:javascript
运行
复制
async function getCurrentUser(id){
try{
    let user = await User.findOne({id:id})
    return user;

}catch(err){
    return err;
}     
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/63592041

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档