我正在尝试理解$.when
,我可以看到,在继续之前要等待多个延迟时,它会很有用。但是,我不确定我理解使用$.when
和一个延迟的用例是什么。举例说明:
var deferred = $.Deferred();
// Is this ever useful?
$.when(deferred).then(...)
// Or can I always do this?
deferred.then(...)
答案 0 :(得分:6)
来自$.when
[docs]文档:
如果将单个Deferred传递给
jQuery.when
,则该方法将返回其Promise对象(Deferred方法的子集)。
因此$.when(deferred).then(...)
与deferred.promise().then(...)
相同。
promise对象只是延迟对象的有限接口。它允许添加回调,但不允许更改Deferred的状态(解析,拒绝它)。
因此,使用$.when
和直接在延迟对象上调用.then
之间基本没有区别。
我认为将单个延迟对象显式传递给$.when
并不合理,因为您没有任何优势。但是,可能存在未知数量的延迟对象,这意味着它也可能只有一个。
答案 1 :(得分:0)
您始终可以.then
,.then
只是您需要同时使用.done
和.fail
时的快捷方式