我试图理解$.when
,我可以看到,当您想在继续之前等待多个延迟时,它会很有用。但是,我不确定我是否理解$.when
与延迟一起使用的用例。为了显示:
var deferred = $.Deferred();
// Is this ever useful?
$.when(deferred).then(...)
// Or can I always do this?
deferred.then(...)
我试图理解$.when
,我可以看到,当您想在继续之前等待多个延迟时,它会很有用。但是,我不确定我是否理解$.when
与延迟一起使用的用例。为了显示:
var deferred = $.Deferred();
// Is this ever useful?
$.when(deferred).then(...)
// Or can I always do this?
deferred.then(...)
来自$.when
[docs]文档:
如果将单个 Deferred 传递给
jQuery.when
,则该方法将返回其 Promise 对象(Deferred 方法的子集)。
所以$.when(deferred).then(...)
是一样的deferred.promise().then(...)
。
承诺对象只是延迟对象的有限接口。它允许添加回调,但不能更改 Deferred 的状态(解决,拒绝它)。
所以结论是,直接在延迟对象上使用$.when
和调用基本上没有区别。.then
我认为将单个延迟对象显式传递给是没有意义的$.when
,因为您没有任何优势。但是,在某些情况下,您有未知数量的延迟对象,这意味着它也可能只有一个。
你总是可以做的.then
,.then
无非是当你需要同时使用.done
和.fail