每秒调用一次此函数,
它永远不会输出:
            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元素,则应在回调内部进行操作。

08-19 15:44