如何停止时间间隔在我的功能

How to stop time interval in my function?

本文关键字:我的 功能 何停止 时间      更新时间:2023-09-26

我有这个函数:

function timedFunction(functionString,timeoutPeriod) {
setTimeout(functionString+"timedFunction('""+functionString+"'","+timeoutPeriod+");",timeoutPeriod);}

这个函数调用:

 timedFunction("startStopky();",1000);

startStopky ();是一个函数,我希望在指定的时间间隔内重复运行。一切都运行得很好,但是如果我想停止这个间隔,我必须像下面这样停止:

for (var i = 1; i < 99999; i++) {
            window.clearInterval(i);
        }

不幸的是,这将停止所有的间隔,我只想停止一个特定的。我该怎么做呢?

与其递归调用timedFunction,不如这样做:

var intervalId = setInterval(startStopky, 1000);

和清除它只需执行:

clearInterval(intervalId);

setTimeout函数返回一个超时ID,您可以与clearTimeout一起使用该ID来删除该超时。间隔也是如此,但在这种情况下,它是setIntervalclearInterval的组合。

例如:

var t = setTimeout(yourFunction, 1000);
clearTimeout(t);
var i = setInterval(yourFunction2, 500);
clearInterval(i);

您有一个Timeout,但是您正在清除一个Interval。clearInterval清除间隔,不清除超时。

你想要window.clearTimeout(timeoutId)

如果您想停止单个进程,您可以使用该间隔的processId。

window.clearTimeout("13");

你真的不应该使用字符串来做这些:

function timedFunction(fn, interval) {
  var timerHandle;
  function runIt() {
    fn();
    timerHandle.id = setTimeout(runIt, interval);
  }
  return timerHandle = { id: setTimeout(runIt, interval) };
}

那么你可以这样调用它:

var handle = timedFunction(startStopky, 1000);

停止进程:

clearTimeout(handle.id);