【发布时间】:2018-05-31 19:58:26
【问题描述】:
我在尝试递归调用方法时遇到了一个奇怪的错误。
就好像编译器跳过了 setTimeout 函数。
我正在从另一个函数调用该函数以开始递归,但 setTimeout 没有再次调用 startFaceTracking()。
我可能很愚蠢,但有人能指出问题吗?
我试过了,
function startFaceTracking() {
var eventHit = false;
if(!eventHit){
setTimeout(startFaceTracking,500);
}
}
还有这个
function startFaceTracking() {
var eventHit = false;
if(!eventHit){
setTimeout(function(){startFaceTracking();},500);
}
}
提前致谢,
【问题讨论】:
-
setTimeout 可能正在运行。你的函数没有做任何其他事情,所以你甚至不知道它是否正在运行。你期待看到什么?
-
var eventHit = false;所以你的代码会重复调用同一个函数 -
该函数肯定没有运行。否则我会陷入无限循环。
-
写一个console.log("SOMETHING");进入你的超时功能并检查是否打印它。可能就像说@Carcigenicate 和 setTimeOut 函数正在工作,但 500 毫秒是很短的时间来欣赏它。
-
@howells699 你可以试试这个......在 startFaceTracking() 函数之外编写 eventHit ,就像一个具有 false 值的全局变量,并将 if 语句复制到 startFaceTracking() 函数中并粘贴到函数下方。因为我假设您在某处调用了该函数,如果没有,可能因此无法正常工作......因为您没有在任何地方调用 startFaceTracking() 函数
标签: javascript jquery recursion