2010/08/16

同期的にイベントを待機するwait()メソッド

NILScriptでは、クリップボードやファイルなど、イベント機構を備えたクラスは全て「observe()」というメソッドでイベントハンドラ関数の登録を行うようになっています。
これは、イベント機構で必要となる機能が「EventMixin」というクラスにまとめて実装されており、ミックスインという仕組みで各クラスに組み込まれているためです。

EventMixinには、他にも「wait()」などのメソッドが用意されており、EventMixinがミックスされている全てのクラスで使用できます。
wait()メソッドは、第1引数に指定された名前のイベントが発生するのを待ってから処理を返します。第2引数でタイムアウトを指定した場合は、指定ミリ秒数が経過したら待機を打ち切り、イベントが発生したかどうかを返り値とします。

この機能を使用すれば、イベントが発生するのを待って次の処理に進むというスクリプトが、下記のようにシンプルに記述できます。
var f=Main.directory.file("readme.txt");
println("readme.txtが更新されるのを待っています");
f.wait("modify");
println("更新されました");

バッチ処理的なスクリプトを書く時には特に便利ですので、覚えておくとよいでしょう。

0 件のコメント:

コメントを投稿