[英]Understanding Javascript Scope Trouble
我的Node.js项目中包含以下代码:
var response;
if (theInput == 1) {
models.User.find({
usersNumber: usersNumber,
active: true
}, function (err, user_data) {
response = "Number is 1";
});
} else if (theInput == 2) {
response = "Number is 2";
} else {
response = "Number is n/a";
}
return response;
当theInput = 1
时,我很难设置响应。 返回响应时undefined
。 我不想在model.find
函数之外进行设置,因为我的实际响应文本(在我的真实代码中)是基于某些数据的。
未定义response
,因为它是异步设置的。 因为输入的处理是异步的(基于回调而不是返回)。 您的函数必须进行回调而不是返回值。 在节点中,也通常使用回调的第一个参数来处理错误,而第二个参数用于返回值:
function giveResponseForInput(theInput, callback) {
if (theInput == 1) {
models.User.find({
usersNumber: usersNumber,
active: true
}, function(err, user_data) {
if (err) {
callback(err)
} else {
callback(null, "Number is 1");
});
} else if (theInput == 2) {
callback(null, "Number is 2");
} else {
callback (null, "Number is n/a");
}
}
var returnValue = giveResponseForInput(1, function(err, value) {
console.log("callback value should be \"Number is 1\" unless the database had an error:", err ? err, value);
});
console.log("return value should be undefined", returnValue);
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.