如果我在一个函数中有一个带有多个链式承诺的 $.Deferred,并且我调用了该函数,我怎么知道该 Deferred 何时解决?例如:http: //jsfiddle.net/5AWK4/
jQuery(function($){
var $div = $('<div>hello world</div>').appendTo('body');
var test = (function(){
var dfd = new $.Deferred();
dfd.then(function(){
return $div.animate({width:300}, 5000, 'swing', function(){return $div.append('<br>line 1');});
})
.then(function(){
return $div.append('<br>line 2');
});
return dfd.resolve();
});
$.when(test()).then(function(){
$div.append('<br>line 3');
});
});
当我运行该代码时,我有以下内容:
你好世界
第 3
行 第 1
行 第 2 行
我期待的是在我的函数返回的 Deferred 解决后显示 «line 3»。我试图在函数中只返回 dfd ,并且调用 test().resolve() 但它也不起作用。
提前致谢