gpt4 book ai didi

javascript - 在 JavaScript 中使用嵌套等待

转载 作者:搜寻专家 更新时间:2023-10-31 23:58:01 25 4
gpt4 key购买 nike

我正在使用 Mongoose 在 Nodejs 应用程序中使用 MongoDB 内存MongoDB 数据库 实现缓存。这里 Nodejs 8.9 与异步/等待支持一起使用。


let get_func = async(userId) => {

let is_cached = await cache_user.findOne({ user_id: userId });

if(!is_cached){
console.log("NOT CACHIED");
let is_dbuser = await db_user.find({});
console.log(is_dbuser);

} else {
console.log("CACHED");
}

console.log("LEAVING get_func")
};

get_func(100);

这是输出:

NOT CACHIED
[]
LEAVING get_func

然而 db_user 充满了数据并且能够验证使用:

db_user.find({}, function(err, users) {
if (err) throw err;
console.log(users);
});

此外还检查了 let is_error, is_dbuser = await db_user.find({}); 是否怀疑函数会按该顺序返回错误和结果。

我应该如何处理这个嵌套的 await 语句。 (但是,功能似乎正在按预期等待第二次等待)。

最佳答案

改为这样做

let get_func = async (userId) => {

let is_cached = await cache_user.findById(userId);

if(!is_cached){
console.log("NOT CACHIED");
let is_dbuser = await db_user.find({});
console.log(is_dbuser);

} else {
console.log("CACHED");
}

console.log("LEAVING get_func")
};

get_func(100);

请注意,使用 findById 更有意义,除非它不满足您的查询要求,而且异步可能需要括号前的空格

关于javascript - 在 JavaScript 中使用嵌套等待,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47268988/

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