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

//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吗?

最佳答案

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

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

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

clearTimeout(nextTimer); // works just fine

07-26 03:31