Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/449.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/image-processing/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
设置超时问题Javascript_Javascript_Jquery_Recursion - Fatal编程技术网

设置超时问题Javascript

设置超时问题Javascript,javascript,jquery,recursion,Javascript,Jquery,Recursion,当我尝试递归调用一个方法时,我遇到了一个奇怪的错误 编译器似乎跳过了setTimeout函数 我从另一个函数调用该函数来启动递归,但是setTimeout不会再次调用startFaceTracking() 我可能很愚蠢,但有人能指出问题所在吗 我试过这个 function startFaceTracking() { var eventHit = false; if(!eventHit){ setTimeout(startFaceTracking,500);

当我尝试递归调用一个方法时,我遇到了一个奇怪的错误

编译器似乎跳过了setTimeout函数

我从另一个函数调用该函数来启动递归,但是setTimeout不会再次调用startFaceTracking()

我可能很愚蠢,但有人能指出问题所在吗

我试过这个

function startFaceTracking() {

    var eventHit = false;


    if(!eventHit){
        setTimeout(startFaceTracking,500);

    } 
}
还有这个

function startFaceTracking() {

    var eventHit = false;


    if(!eventHit){
        setTimeout(function(){startFaceTracking();},500);

    } 
}
提前感谢,

您的超时在函数内部,并且您没有调用该函数,因此从一开始就不会启动超时。调用它一次,它就会递归

函数startFaceTracking(){
log(“开始面部跟踪!”)
var-eventHit=false;
如果(!eventHit){
log(“启动超时…”);
设置超时(startFaceTracking,500);
}
}

startFaceTracking()
您可以使用立即调用的函数表达式(也称为IIFE),如下所示:

(function startFaceTracking() {

  var eventHit = false;


  if(!eventHit){
    setTimeout(startFaceTracking,500);

  } 
})();

您可以在此处阅读更多内容:

问题是我在使用setTimeout中的setTimeout

我的java脚本和测试函数的格式都很糟糕

对不起,打扰了大家。我本可以打一个更好的描述我的问题


再次感谢,

设置超时可能正在运行。但是,您的函数不做任何其他事情,因此您甚至不知道它是否正在运行。您希望看到什么?
var eventHit=false因此您的代码将重复调用同一个函数该函数肯定没有运行。否则我将处于无限循环中;输入超时函数并检查是否打印它。可能就像说@Carcigenicate和setTimeOut函数正在工作,但500密耳秒是很短的时间来欣赏它。@howells699你可以试试这个。。。将eventHit写入startFaceTracking()函数外部,就像使用false值的全局变量一样,并将if语句复制到startFaceTracking()函数中,然后粘贴到函数下方。因为我假设你在某个地方调用了函数,如果不是的话,很可能是因为这个原因不起作用。。。因为您不在None中调用startFaceTracking()函数,所以可以使该方法递归并使用setTimeout函数吗?Thanks@howells699然后我们有一个伟大的复制品。。。我不知道