JavaScript setTimeoutで実行される関数の中で発生するエラーは、セットした部分のtry/catchで補足することはできません。 function throwError(){ throw new Error('ERROR'); } try{ setTimeout(throwError, 3000); } catch(e){ // ここには到達しない alert(e); } MochiKit.Async.Deferredを使うと、エラーバックでエラーを補足できます。 callLater(3, throwError).addErrback(function(e){ alert(e); }); エラーの補足以外にも、Deferredのインターフェースから以下が行えます。 キャンセル(cancel)状態(fired)コールバックの追加(addCallback)エラーバックの追加
JavaScript MochiKit.Async.Deferredは、「現時点ではまた利用できない値」を扱うためのクラスです。 以下のように、コールバックを並べ、イベントを発火させると、各々の返り値が次のコールバックへ渡され実行されていきます。 function increment(value){ alert(value); return value+1; } var d = new Deferred(); d.addCallback(increment); // alert(1) d.addCallback(increment); // alert(2) d.addCallback(increment); // alert(3) d.callback(1); この時、コールバックは以下のようにチェーンを形成しています。(本当はエラーバックも合わせて一つのチェーンを形成しているのですが、
Deferredに登録した関数が次に実行されるまでの期間も設定できるようにしたものです。ldrの遅延描画的なことを実現してみたかったので。以下のような感じに使います。 var id = new IntervalDeferred(); id.add_action(function() { Hoge.update_item(0); }, 500); id.add_action(function() { Hoge.update_item(1); }, 200); id.fire(); var id = new IntervalDeferred(true); id.add_action(function() { Hoge.update_item(0); }, 500); id.cancel(); id.add_action(function() { NeverHappend(); }, 200);
mochibotはFlash SWFファイルのトラフィック計測アプリです。flvの転送量等も計測出来るようでアクセスカウンタの豪華版、といったところでしょうか。正直にいうとアプリ自体には今のところあまり興味なくて、Flash / JavaScript Integration Kit見てたら長めのmochikit利用例として良さそうな感じだったので読み始めています。サービスのデモとしてアクセス出来る画面のコードで気になる部分を抜粋します。 非キャッシュjson読み込み jsライブラリのバージョン上がったときに最新版がダウンロードされるようにするテクニックと同じ要領で非キャッシュjsonドキュメントを読み込む、はず。 http://mochibot.com/include/js/my_common.js function loadUncachedJSONDoc(uri) { return lo
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く