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で定期的にサーバーにアクセスさせる場合などで、一定時間後にインターバルタイマーを止めたい場合には、使える方法だと思います。