我想在函数内部和外部访问k和错误值。
我已经将k的值初始化为0,将error初始化为空字符串。但是console.log("executed")
已打印。
var k = 0;
var error = "";
const { teamname, event_name, inputcount, name, roll } = req.body;
function check1(teamname, event_name, callback) {
Register.find({ teamname: teamname, eventname: event_name }, (err, docs) => {
callback(docs.length)
});
}
check1(teamname, event_name, function (e) {
if (e != 0) {
console.log("executed");
k = 1
}
});
console.log(k) // 0
console.log(error) // undefined
答案 0 :(得分:2)
您可以使用NodeJS全局对象声明全局变量。但是在您的情况下,您希望k为1,但它为0。由于NodeJS是异步,因此您应在回调内使用console.log(k)。
运行此程序时,console.log(k)和console.log(error)在check1
函数将值返回到回调之前执行。那是异步过程。因此您将k设为0。为了解决该问题,您应该在回调内使用console.log
var k = 0;
var error = "error";
const { teamname, event_name, inputcount, name, roll } = req.body;
function check1(teamname, event_name, callback) {
Register.find({ teamname: teamname, eventname: event_name }, (err, docs) => {
callback(docs.length)
});
}
check1(teamname, event_name, function (e) {
if (e != 0) {
console.log("executed");
k = 1
}
console.log(k) // prints 0 or 1
console.log(error) // prints "error"
});