每秒调用一次此函数,
它永远不会输出:
console.log(“ noise:” + noise);
所以出了点问题,我不知道该怎么办或如何解决。
function readEye() {
console.log("readEye");
$.getJSON('output.json', function(data){
faceDetected = data.faceDetected;
frameCount = data.frameCount;
noise = data.noise;
console.log("noise: "+noise);
});
// show values in devPanel
document.getElementById('faceDetected').innerHTML = "faceDetected: "+faceDetected;
}
最佳答案
您偶然发现了“异步陷阱”。 $ .getJSON()不会停止正常的程序流,也不会等到完成。因此,以下行document.getElementById('faceDetected').innerHTML = "faceDetected: "+faceDetected;
将被称为IMMEDIATELY,带有未定义的“ faceDetected”变量。而且这将每秒发生一次,无论之前的请求是否完成...。
一般来说,您只应从AJAX请求的回调内部开始新的超时。另外,您只应在回调中使用诸如“ faceDetected”或“ noise”之类的变量。因此,如果要将这些值分配给DOM元素,则应在回调内部进行操作。