为了账号安全,请及时绑定邮箱和手机立即绑定

发现一个代码问题

第69行直接返回dtd是不对的。必须返回dtd.promise()。原因是jQuery规定,任意一个deferred对象有三种执行状态----未完成,已完成和已失败。如果直接返回dtd,$.when()的默认执行状态为"已完成",立即触发后面的done()方法,这就失去回调函数的作用了。dtd.promise()的目的,就是保证目前的执行状态----也就是"未完成"----不变,从而确保只有操作完成后,才会触发回调函数。

正在回答

2 回答

主要是他还要促发另外一个动画的事件

0 回复 有任何疑惑可以回复我~
#1

平沙落雁式 提问者

亲,能否说的再清楚一些呢?
2016-01-25 回复 有任何疑惑可以回复我~
#2

平沙落雁式 提问者

非常感谢!
2016-01-25 回复 有任何疑惑可以回复我~

$("#block3").animate({

                width: "50%"

            }, 2000, function() {

                dtd.resolve(); // 改变Deferred对象的执行状态

            });

这个动画的回调函数已经改变了Deferred对象的执行状态,所以可以直接返回dtd对象

0 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消

发现一个代码问题

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信