2011年09月27日

jQuery Deferred2

jQuery Deferredの続き

deferred.isRejected()とdeferred.isResolved()

すでにrejectedかresolvedが行なわれているかチェックできるメソッド。

var obj = $.Deferred();
obj.then(function(){
if(obj.isResolved())alert('ok');//ok
});

setTimeout( function() {
if(obj.isResolved())alert('ng');
obj.resolve();
}, 2000 );


このコードではngはアラートされないがokはアラートが表示される。

サンプル

deferred.pipe()

pipe()はDeferredオブジェクトがresolveやrejectに設定された内容を実行する前に制御したい命令を入れることができる。

var defer = $.Deferred(),
filtered = defer.pipe(function( value ) {
return value * 2;
});
defer.resolve( 5 );
filtered.done(function( value ) {
alert( "Value is ( 2*5 = ) 10: " + value );
});


deferred.promise();

promise()はDeferredオブジェクトを返す。

var obj = $.Deferred();
var func = function(){
$("body").append("<p>run....</p>");
setTimeout(function(){
obj.resolve();
},2000);
return obj.promise();
}

$.when(func()).done(function(){
$("body").append("<p>finish!</p>");
});


このようにDeferredオブジェクトを返すことでwhenメソッドで遅延の制御が可能になる。

サンプル
posted by ねこまんま at 15:19 | Comment(0) | TrackBack(0) | jQuery | 更新情報をチェックする
この記事へのコメント
コメントを書く
お名前:

メールアドレス:

ホームページアドレス:

コメント:

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

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