如何解决在嵌套函数中使用变量
我在嵌套函数中使用了一个变量,在将值传递给父函数后,但在调用它时什么也没显示。
function userexists(key) {
let user = false;
UsersModel.findOne({ email: key },function (error,foundUser) {
if (!error && foundUser) user = foundUser;
else {
console.log("error or not found: " + error);
}
});
return user;
}
解决方法
这样做的原因是 findOne 似乎是一个异步函数。因此 user
始终为 false
。确保 async await
或在函数本身中添加回调函数。
如果可能,请使用异步等待示例:
async function abc(key) {
const response = await UsersModel.findOne({ email: key });
if (response.error)
return false;
}
return response.foundUser;
}
示例回调函数:
function async abc(key,f) {
UsersModel.findOne({ email: key },(error,foundUser) => {
if (!error) f();
});
}
,
之前
function userexists(key) {
let user = false;
UsersModel.findOne({ email: key },function (error,foundUser) {
if (!error && foundUser) user = foundUser;
else {
console.log("error or not found: " + error);
}
});
return user;
}
在函数内部使用回调,
function userexists(key,callback) {
UsersModel.findOne({ email: key },foundUser) {
if (!error && foundUser) return callback(foundUser);
else return callback(false);
});
}
随叫随到,
userexists(username,function (user) {
// you can use user here
});
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。