PeriodicalExecuterを停止させる

2007.07.20 / javascript

Prototype.jsで定期実行させるための便利オブジェクトPeriodicalExecuterですが、少し前のバージョンまで停止させる方法がありませんでした。clearIntervalさせるためのsetIntervalの返り値が保存されていなかったのが原因です。実際、少し調べても「停止のためのインターフェースは無いよ」な声ばかり。でも、これウソです。最新のバージョンだと停止させることは可能です。

バージョン1.5.0からはPeriodicalExecutorオブジェクトにstop()メソッドが追加されています。コード見れば分かりますが、上記の問題であったregisterCallback関数(setIntervalを行う実体関数)の返り値をメンバ変数に格納させておき、それをstopメソッド内でclearIntervalさせています。

コードを書けばこんな感じになります。

  // hogeを30秒毎に定期実行
  var executer = new PeriodicalExecuter(hoge, 30);
  // 定期実行を停止
  executer.stop();
  

それにしても、何でここまでこの機能を引っ張っていたのか。。もう少し早くから実装されてもよかった機能なんですけどね。