当我试图以递归方式调用某个方法时,我遇到了一个奇怪的错误。
就像编译器跳过setTimeout函数一样。
我从另一个函数调用该函数来启动递归,但是setTimeout不会再次调用startFaceTracking()。
我可能是愚蠢的,但是有人可以指出这个问题吗?
我试过了,
function startFaceTracking() {
var eventHit = false;
if(!eventHit){
setTimeout(startFaceTracking,500);
}
}
和这个
function startFaceTracking() {
var eventHit = false;
if(!eventHit){
setTimeout(function(){startFaceTracking();},500);
}
}
提前致谢,
答案 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.
抱歉让周围的人变得混乱。我本来可以更好地描述我的问题。
再次感谢,