【JavaScript】setIntervalを一定時間後に、setTimeoutする方法【clearInterval】

JavaScriptのsetIntervalを一定時間後に、停止する方法の覚書です。

まず、前提として、インターバルタイマーの使い方です。

var intervalID = setInterval('someFunc()', 10000);

上記スクリプトで、10秒ごとにsomeFuncを実行できます。

このタイマーを、単純に停止するには、タイマーIDである、intervalIDを、clearIntervalすればOKです。

clearInterval(intervalID);

それでは、このsomeFuncを実行するインターバルタイマーを1分後に停止するにはどうすればよいのでしょうか?

ここでは、setTimeout関数にclearIntervalを指定する方法で実行してみます。

var intervalID = setInterval('someFunc()', 10000);
setTimeout(function(){clearInterval(intervalID);}, 60000);

上記スクリプトを実行すると、インターバルが、1分後に停止します。

自分が実行した限りでは、clearIntervalを無名関数化することにより上手くいきました。

なお、直接、clearInterval関数を指定した場合は、なぜかエラーになったのですが、今、思うとシングルクオートを括り忘れたからかもしれません。

いずれにしても、インターバルを永続させると不具合が生じる場合、たとえば、Ajaxで定期的にサーバーにアクセスさせる場合などで、一定時間後にインターバルタイマーを止めたい場合には、使える方法だと思います。

カテゴリー: JavaScript パーマリンク

コメントを残す

メールアドレスが公開されることはありません。