その8

実際動いているサイトはこちら

plaza.jsの解説(続き)

 今回は、小さいファンクションについて説明します。

終了時処理
function conclude(e) {
    for(objname in httpObj) {
        abortXMLHttpRequest(objname);
    }
}

 このファンクションは、ページのアンロード時に呼び出して、動いている全てのhttpObjについて通信中止を勧告します。
 アンロード時には、自然とこれらのhttpObjも破棄される筈ですが、ブラウザによっては残存する可能性もあり、またアンロード時以外にも使うことがあるかも知れないので、一応用意しています。

実際に行われる処理
function invoke() {
    // 処理の連発を防止する
    if(!localTimerId) {
        localTimerId = setTimeout('Search()',1000);
    }
}

 前回のinitファンクションに登場した、addListenerに渡されるイベントハンドラがこのファンクションです。
 keyupイベントやclickイベントは、非常に小さい間隔で発生する可能性があり、その度に検索処理を呼び出してしまうと著しいリソース不足になるため、1秒間のタイムラグを用意します。
 初処理開始まで1秒間待機しますが、その間に何度このファンクションが呼び出されてもタイマが生きているため、実際の検索処理(Search())は行われないことになります。
 なお、Search()の中でこのタイマはクリアされるため、検索処理が終了すれば、イベントの発生によって再び1秒間の待機が開始されることになります。

 次回は、実際の処理を行うファンクションについて順次解説します。