我正在尝试访问全局声明并在回调函数内分配的变量。我想访问外面的值。有没有办法做到这一点?
我尝试了什么:
节点JS(onvif模块)。
var jsonObject ='[';
var count = 0;
var len = cams.length;
cams.forEach(function(cam) {
var hardwareId,serialNumber;
cam.getDeviceInformation(function(a,b,c){
hardwareId = b.hardwareId;
serialNumber = b.serialNumber;
console.log(hardwareId,serialNumber);//working here
});
console.log(hardwareId,serialNumber);//getting undefined here
count++;
jsonObject +='{';
jsonObject +='"hostname":"'+cam.hostname+'",';
jsonObject +='"port":"'+cam.port+'",';
jsonObject +='"hardwareId":"'+hardwareId+'",';
jsonObject +='"serialNumber":"'+serialNumber+'"';
if(count==len) {
jsonObject +="}";
} else {
jsonObject +="},";
}
});
jsonObject +=']';
res.json(JSON.parse(jsonObject));
我知道这是由于异步调用。有人可以查看代码并告诉更好的方法来写这个。
答案 0 :(得分:0)
这是可能的,但是如果传递给getDeviceInformation的函数没有被同步调用,那么在调用undefined
时变量仍然是console.log
。
换句话说 - 它不是可访问性问题,而是时间问题。