4

実行時にsetIntervalで設定された関数の呼び出しの間隔を変更する方法はありますか?それを削除して(clearInterval)、別の値で再度元に戻す以外に方法はありますか?

4

2 に答える 2

14

代わりに setTimeout を使用してください。さらに、これは非同期 JS のノンブロッキング メソッドです。

var interval = 1000;

function callback() {
   console.log( 'callback!' );
   interval -= 100; // actually this will kill your browser when goes to 0, but shows the idea
   setTimeout( callback, interval );
}

setTimeout( callback, interval );

キューのサイズが限られているため、場合によっては を使用しないでくださいsetInterval(多くのsetInterval+ 長いコールバック。通常はタイムアウトよりも長くなります)。一部のコールバックはブラウザによって削除され、実行されません。実行のみsetTimeoutを保証します。

于 2013-02-26T14:05:14.203 に答える
2

いいえ; 間隔を削除して再度追加するのは、使用した場合の方法ですsetInterval()

setTimeout()ただし、最後にさまざまな遅延を指定して繰り返し呼び出すことで、さまざまなタイムアウトの同じ目標を達成できます。

好奇心から、間隔を変更するために何をしていますか? もしかrequestAnimationFrame()したらもっと相応しいかも?

于 2013-02-26T14:03:43.743 に答える