gpt4 book ai didi

javascript - 异步/等待未按预期顺序执行

转载 作者:行者123 更新时间:2023-11-29 17:43:10 24 4
gpt4 key购买 nike

我目前正在尝试学习 MongoDB 和 javascript 中的异步函数,并且在过去的几个小时里一直在胡闹,但没有成功。

async function getObj(name) {
var db = await mongo.connect(DBURL, {
useNewUrlParser: true
});

var dbo = db.db("testdb");

var meme;

await dbo.collection("files").findOne({
"_id": name
}, function(err, res) {
console.log(res + " a");
meme = res;
console.log(meme + " b");
});

console.log(meme + " c");
await db.close();
console.log(meme + " d");
return meme;
}

程序按顺序打印:CdA

查询工作正常,如果我执行 console.log(res),我会得到具有正确结果的对象,所以这不是问题。

为什么程序会忽略前面的 await 并最终打印并返回 undefined?

最佳答案

当您将 db.findOne 与回调一起使用时,您没有使用可以 await 的 Promises。你应该像这样等待它:

async function getObj(name) {
var db = await mongo.connect(DBURL, {
useNewUrlParser: true
});

var dbo = db.db("testdb");

var meme = await dbo.collection("files").findOne({
"_id": name
});

console.log(meme + " c");
await db.close();
console.log(meme + " d");
return meme;
}

关于javascript - 异步/等待未按预期顺序执行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51810248/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com