2011年09月28日

resolveとresolveWith(rejectとrejectWith)

jQuery Deferredでは遅延された処理の発火にresolveとresolveWith(失敗時はrejectとrejectWith)を利用します。これらの違いはresolveWithではコンテキストの設定が可能な点です。コールバック関数はコンテキストのメソッドとして実行されるのでthisでコンテキストで指定したオブジェクトにアクセスが可能です。

var obj = $.Deferred();
obj.then(function(arg1,arg2){
$("body").append("<hr>");
$("body").append(this.key);
$("body").append("<hr>");
$("body").append(arg1);
$("body").append("<hr>");
$("body").append(arg2);
});
hoge = {
key:"val"
}
$("#resolveWith").click(function(){
obj.resolveWith(hoge,["hoge1","hoge2"]);
});


サンプル

引数の扱いには注意が必要でresolveやrejectではオブジェクトがそのままコールバック関数の引数として渡されるのに対して、resolveWithやrejectWithは配列で渡した引数を展開して取得する必要があります。
posted by ねこまんま at 10:51 | Comment(0) | TrackBack(0) | jQuery | 更新情報をチェックする
この記事へのコメント
コメントを書く
お名前:

メールアドレス:

ホームページアドレス:

コメント:

※ブログオーナーが承認したコメントのみ表示されます。

この記事へのトラックバック