3

私はこの機能を持っています:

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

私が呼び出すこの関数:

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

startStopky(); 指定した時間間隔で繰り返し実行したい機能です。すべてがうまく機能しますが、この間隔を停止したい場合は、次のように停止する必要があります。

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

残念ながら、これはすべての間隔を停止します。私は特定の 1 つだけを停止したいと考えています。どうすればいいですか?

4

4 に答える 4

2

この関数は、そのタイムアウトを削除するためにsetTimeout使用するタイムアウト ID を返します。clearTimeoutインターバルも同じですが、その場合はsetIntervalアンドclearIntervalコンボです。

例えば:

var t = setTimeout(yourFunction, 1000);
clearTimeout(t);

var i = setInterval(yourFunction2, 500);
clearInterval(i);
于 2013-05-06T18:54:07.653 に答える
1

タイムアウトがありますが、インターバルをクリアしています。clearIntervalタイムアウトではなく、間隔をクリアします。

あなたがしたいwindow.clearTimeout(timeoutId)

1 つを停止する場合は、その間隔の processId を使用します。

window.clearTimeout("13");
于 2013-05-06T18:52:51.773 に答える
0

これを行うために文字列を使用するべきではありません。

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);
于 2013-05-06T18:58:01.570 に答える