$ .when为单个$ .Deferred做什么?

Abd*_*aly 8 jquery jquery-deferred

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

var deferred = $.Deferred();

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

// Or can I always do this?
deferred.then(...)
Run Code Online (Sandbox Code Playgroud)

Fel*_*ing 6

来自$.when [docs]文档:

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

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

promise对象只是延迟对象的有限接口.它允许添加回调,但不允许更改Deferred的状态(解析,拒绝它).

因此,最终使用$.when.then直接调用延迟对象之间基本没有区别.

我不认为这是有道理通过一个单一的递延对象明确$.when,因为你没有得到任何好处.但是,可能存在未知数量的延迟对象,这意味着它也可能只有一个.