setTimeout问题Javascript

时间:2017-12-18 13:00:49

标签: javascript jquery recursion

当我试图以递归方式调用某个方法时,我遇到了一个奇怪的错误。

就像编译器跳过setTimeout函数一样。

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

我可能是愚蠢的,但是有人可以指出这个问题吗?

我试过了,

function startFaceTracking() {

    var eventHit = false;


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

    } 
}

和这个

function startFaceTracking() {

    var eventHit = false;


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

    } 
}

提前致谢,

3 个答案:

答案 0 :(得分:3)

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

(function startFaceTracking() {

  var eventHit = false;


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

  } 
})();

您可以在此处阅读更多内容:Ben Alman about Immediately-Invoked Function Expression (IIFE)

答案 1 :(得分:2)

你的超时函数内部,并且你没有调用该函数,因此从不首先启动超时。叫它一次,然后就会递归。



function startFaceTracking() {
  console.log("Starting face tracking!")

  var eventHit = false;

  if (!eventHit) {
    console.log("Starting timeout...");
    setTimeout(startFaceTracking, 500);
  }
}

startFaceTracking()




答案 2 :(得分:0)

我正在使用的问题是我在setTimeout中使用了setTimeout。

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

Here is the link to the answer.

抱歉让周围的人变得混乱。我本来可以更好地描述我的问题。

再次感谢,