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