JavaScriptにはスレッドがありません。時間のかかる処理をするにはsetTimeoutを使った疑似スレッドを使うことになります。
すると今度は完了待ちのための手段が大変です。いくつかの処理が終わったら最後にこれをする、とかあるわけです。
そんなときのための対策にこんな関数を用意して使っていました。
// ちょー適当な関数名…この関数は関数を返します。返ってきた関数はcount回呼び出すとfuncを呼びます。
function doat(count, func) {
return function() {
if( --count == 0 )
func();
};
}
これで、各疑似スレッドに返ってきた関数を呼び出させれば、最後に終わったスレッドがfuncを実行してくれるわけです。
でもdojoにdojo.Deferredクラスを見つけました。dojo的にはこっちを使うみたいです。
まだ使い慣れていませんが、そのうちこっちに乗り換えよう…。
0 件のコメント:
コメントを投稿