gpt4 book ai didi

javascript - 无法访问回调函数内分配的变量

转载 作者:太空宇宙 更新时间:2023-11-04 02:15:10 24 4
gpt4 key购买 nike

我正在尝试访问全局声明并在回调函数内分配的变量。我想访问外面的值。有办法做到这一点吗?

我尝试过:

Node 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));

我知道这是由于异步调用造成的。有人可以看看代码并告诉我们更好的写法吗?

最佳答案

这是可能的,但如果传递给 getDeviceInformation 的函数没有同步调用,那么在调用 console.log 时变量仍将是 未定义

换句话说 - 这不是可访问性的问题,而是时机的问题。

关于javascript - 无法访问回调函数内分配的变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36100801/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com