【发布时间】:2021-11-01 15:17:42
【问题描述】:
为什么我的 Aync Await 函数返回 Pending Promise ?我已经尝试过.then 声明,但它不起作用,这是我的代码:
const findData = async () => {
let query = await userSchema.findOne({ _id: research["uploaderID"] });
return query;
};
research["uploaderInfo"] = findData();
console.log(findData());
当我尝试控制台记录 findData 时,它只给了我这个:
Promise { <pending> }
Promise { <pending> }
当我尝试检查研究对象时,它是空的,但是当我尝试在 findData() 函数中添加 console.log(query) 时,它给了我预期的结果,这意味着 query 是正确的,这是因为 async / await 的问题。
更新
当我尝试像这样设置我的研究时,我尝试使用 @dai 解决方案添加等待
const findData = async () => {
let query = await userSchema.findOne({ _id: research["uploaderID"] });
return query;
};
async () => {
research["uploaderInfo"] = await findData();
};
当我尝试这个时,我放在第二个无名 async function 中的任何代码都不起作用,我尝试将 object 设置为随机 string 并且它仍然没有改变
【问题讨论】:
-
你的
findData函数是一个async函数,它隐式总是返回一个Promise,这意味着你需要await它返回的Promise像这样:research["uploaderInfo"] = await findData();跨度> -
是的,同意@Dai,请等待,以便您得到答案。
-
它告诉我需要将 await 放入异步函数中,是否需要将其放入函数中? @戴
-
@Walls 你运行的是什么版本的 NodeJS?现代版本的 NodeJS AFAIK 应该支持“顶级
await”。否则,请参阅:stackoverflow.com/questions/46515764/… -
你是什么意思你放在第二个异步函数中的任何代码都不起作用?你在调用那个函数吗?