我试图理解$.when,我可以看到,当你想要继续之前等待多个延迟时,它会很有用.但是,我不确定我理解使用$.when和延迟的用例是什么.为了显示:
var deferred = $.Deferred(); // Is this ever useful? $.when(deferred).then(...) // Or can I always do this? deferred.then(...)
解决方法
从
$.when
[docs]文档:
If a single Deferred is passed to
jQuery.when
,its Promise object (a subset of the Deferred methods) is returned by the method.
所以$.when(deferred).then(…)与deferred.promise().然后(…)相同.
promise对象只是延迟对象的有限接口.它允许添加回调,但不允许更改Deferred的状态(解析,拒绝它).
最后,使用$.when和直接在延迟对象上调用.then之间基本没有区别.
我认为将一个延迟对象明确地传递给$.when是没有意义的,因为你没有任何优势.但是,在某些情况下,您可能存在未知数量的延迟对象,这意味着它也可能只有一个.