$(function(){
var dfd = $.when( $('div').eq(0).fadeOut(1000) );
// ADD NOW NEW FUNCTION DO dfd
dfd.then(function(){
alert();
});
});
dfd 遅延オブジェクトが実行されているが、まだ解決されていない場合、別の関数を追加することは可能ですか?
$(function(){
var dfd = $.when( $('div').eq(0).fadeOut(1000) );
// ADD NOW NEW FUNCTION DO dfd
dfd.then(function(){
alert();
});
});
dfd 遅延オブジェクトが実行されているが、まだ解決されていない場合、別の関数を追加することは可能ですか?
標準の jQuery メソッド チェーンでは、jQuery を返すことが期待.fadeOut()
されますが、式では ...
$.when( $('div').eq(0).fadeOut(1000) )...;
... 内部の jQuery マジックによって、 に渡されるパラメーターは、実際には のキュー$.when()
から派生した promiseです。明確にするために、次のように記述します...fx
$('div').eq(0)
$.when( $('div').eq(0).fadeOut(1000).promise('fx') )...;
実際には$.when()
、2 つ以上の promise に応答して何かを実行する必要がない限り、使用する理由はありません。したがって、次のように書くことができます...
var promise = $('div').eq(0).fadeOut(1000).promise();
...さまざまな方法で任意の数の「完了」コールバックをアタッチできるプロミスを提供します。
可能なもののサンプルを次に示します。
var promise = $('div').eq(0).fadeOut(1000).promise();
promise.then(function() {
alert('done 1');
});
promise.done(function() {
alert('done 2');
});
promise.then(function() {
alert('done 3');
}).always(function() {
alert('done 4');
});
.promise()を使用できます:
$('div').eq(0).promise().done(function(){
alert();
});