8

我试图理解$.when,我可以看到,当您想在继续之前等待多个延迟时,它会很有用。但是,我不确定我是否理解$.when与延迟一起使用的用例。为了显示:

var deferred = $.Deferred();

// Is this ever useful?
$.when(deferred).then(...)

// Or can I always do this?
deferred.then(...)
4

2 回答 2

6

来自$.when [docs]文档:

如果将单个 Deferred 传递给jQuery.when,则该方法将返回其 Promise 对象(Deferred 方法的子集)。

所以$.when(deferred).then(...)是一样的deferred.promise().then(...)

承诺对象只是延迟对象的有限接口。它允许添加回调,但不能更改 Deferred 的状态(解决,拒绝它)。

所以结论是,直接在延迟对象上使用$.when和调用基本上没有区别。.then

我认为将单个延迟对象显式传递给是没有意义的$.when,因为您没有任何优势。但是,在某些情况下,您有未知数量的延迟对象,这意味着它也可能只有一个。

于 2012-06-06T15:42:40.680 回答
0

你总是可以做的.then.then无非是当你需要同时使用.done.fail

于 2012-06-06T15:42:13.837 回答