如何使用 javascript 从外部函数访问内部函数的属性
How to access properties of inner function from outer function with javascript
我已经在函数中声明了全局级别的变量,最终在内部函数中发生了变化,我想 return 将变量值更改为外部函数的值,但目前 undefined.Plz 提供了指导。
function checkResult(req){
let result = true;
Reservation.find({result_date: req.body.res_date}, function (err,doc) {
if (err) {console.log(err);}
else if (reservations) {
result = false;
console.log(result);
}
})
console.log("Final:");
return result; // undefined error
}
你应该使用回调。
例如:
function checkResult(req, callback){
let result = true;
Reservation.find({result_date: req.body.res_date}, function (err,doc) {
if (err) {console.log(err);}
else if (reservations) {
result = false;
}
callback(result);
})
}
然后像这样使用函数:
checkResult(req, function(result){
console.log(result); // prints the boolean
});
Reservation.find
看起来接受一个在完成时调用的回调。
如果 Reservation.find
是异步的,那么 checkResult
告诉 Reservation.find
开始执行,然后将立即 return result
(即 undefined
)。
换句话说,return result;
在 之前 result = false;
执行,因为匿名函数 function (err,doc)
中的所有内容都发生在函数执行。
尝试在回调(function (err,doc)
块)中执行任何需要 result
的操作。
编辑:向井健二在下面显示的内容
我已经在函数中声明了全局级别的变量,最终在内部函数中发生了变化,我想 return 将变量值更改为外部函数的值,但目前 undefined.Plz 提供了指导。
function checkResult(req){
let result = true;
Reservation.find({result_date: req.body.res_date}, function (err,doc) {
if (err) {console.log(err);}
else if (reservations) {
result = false;
console.log(result);
}
})
console.log("Final:");
return result; // undefined error
}
你应该使用回调。
例如:
function checkResult(req, callback){
let result = true;
Reservation.find({result_date: req.body.res_date}, function (err,doc) {
if (err) {console.log(err);}
else if (reservations) {
result = false;
}
callback(result);
})
}
然后像这样使用函数:
checkResult(req, function(result){
console.log(result); // prints the boolean
});
Reservation.find
看起来接受一个在完成时调用的回调。
如果 Reservation.find
是异步的,那么 checkResult
告诉 Reservation.find
开始执行,然后将立即 return result
(即 undefined
)。
换句话说,return result;
在 之前 result = false;
执行,因为匿名函数 function (err,doc)
中的所有内容都发生在函数执行。
尝试在回调(function (err,doc)
块)中执行任何需要 result
的操作。
编辑:向井健二在下面显示的内容