setTimeout问题Javascript
我在尝试递归调用某个方法时遇到了一个奇怪的错误。setTimeout问题Javascript
它就好像编译器跳过了setTimeout函数。
我从另一个函数调用函数来启动递归,但setTimeout不会再次调用startFaceTracking()。
我可能是愚蠢的,但有人可以指出这个问题?
我已经试过了,
function startFaceTracking() {
var eventHit = false;
if(!eventHit){
setTimeout(startFaceTracking,500);
}
}
,并提前此
function startFaceTracking() {
var eventHit = false;
if(!eventHit){
setTimeout(function(){startFaceTracking();},500);
}
}
感谢,
您可以使用立即调用的函数表达式(也称为IIFE)是这样的:
(function startFaceTracking() {
var eventHit = false;
if(!eventHit){
setTimeout(startFaceTracking,500);
}
})();
你可以在这里阅读更多:Ben Alman about Immediately-Invoked Function Expression (IIFE)
太棒了......我不知道 –
你超时内的功能,你也不会调用该函数,所以超时从不首先发起。调用一次,然后它会递归。
function startFaceTracking() {
console.log("Starting face tracking!")
var eventHit = false;
if (!eventHit) {
console.log("Starting timeout...");
setTimeout(startFaceTracking, 500);
}
}
startFaceTracking()
是否可以使该方法递归并使用setTimeout函数?谢谢 – howells699
@ howells699然后我们有一个副本https://stackoverflow.com/questions/6685396/execute-the-setinterval-function-without-delay-the-first-time –
问题当时我正在使用setTimeout中的setTimeout。
我已经严重格式化了我的Java脚本并测试了函数。
Here is the link to the answer.
对不起乱身边的每一个人。我本可以更好地描述我的问题。
再次感谢,
setTimeout可能正在运行。你的函数虽然没有做任何事情,所以你甚至不知道它是否在运行。你期望看到什么? – Carcigenicate
'var eventHit = false;'所以你的代码会反复调用相同的函数 –
函数肯定没有运行。否则,我会陷入无限循环。 – howells699