$(function(){
var dfd = $.when( $('div').eq(0).fadeOut(1000) );
// ADD NOW NEW FUNCTION DO dfd
dfd.then(function(){
alert();
});
});
如果dfd延迟对象正在运行但是尚未解决,是否可以添加另一个函数?
答案 0 :(得分:1)
有点不清楚,但我认为您要检查延迟是否已解决,如果不是,则添加另一个回调:
基本上你可以检查
if (dfd.state() == 'resolved')
查看是否可以添加其他回调。
答案 1 :(得分:0)
在标准的jQuery方法链中,我们希望.fadeOut()
返回jQuery,但是在表达式中...
$.when( $('div').eq(0).fadeOut(1000) )...;
...通过一个内部jQuery魔术,传递给$.when()
的参数实际上是从fx
$('div').eq(0)
队列派生的一个承诺。要明确,我们会写......
$.when( $('div').eq(0).fadeOut(1000).promise('fx') )...;
实际上没有理由使用$.when()
,除非您需要做出某些回应两个或更多承诺的事情。我们可以写下来......
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');
});
<强> DEMO 强>
答案 2 :(得分:-1)
您可以使用.promise():
$('div').eq(0).promise().done(function(){
alert();
});