1

所以我在函数之外声明空白变量。

//To be Timeouts
var progressionTimer;
var nextTimer; 
var cycleTimer;

然后在函数内

progressionTimer = setTimout(loadNextFunction, 2000);
progressionTimer();

nextTimer = setTimeout(loadOutsideFunction, 2000);
nextTimer();

//etc

但是每次调用其中一个声明时

nextTimer();

我在 chrome/firefox/etc 中的控制台充满了这个

Uncaught TypeError: number is not a function

它完全按预期运行,并且 clearTimeout 没有问题,但是控制台错误让我感到沮丧,任何人都可以在不失去功能的情况下解决这个问题并且仍然有 clearTimeout 工作吗?

4

1 回答 1

1

setTimeout返回一个处理程序,一个允许您引用超时的 ID,以便您可以使用 清除它clearTimeout,它是一个数字。

没有返回可以执行的函数,这就是问题所在,您正在尝试执行的返回值setTimeout

nextTimer = setTimeout(loadOutsideFunction, 2000);
nextTimer(); // not a function, but a number referencing the timeout ?

clearTimeout(nextTimer); // works just fine
于 2015-02-10T23:45:04.263 回答