返回值:Deferreddeferred.then(doneCallbacks, failCallbacks)

添加当延迟对象被受理(resolve)或被拒绝(reject)时调用的处理程序。

所有的参数(包括从 jQuery 1.7 开始提供的 progressCallbacks)都可以是单个函数或是一个函数数组。不需要使用的参数,可以将其设置成 null。或者使用 .done(), .fail().progress() 来设定单一类型的回调函数。

当延迟对象被受理(resolve)时,doneCallbacks 会被调用。如果延迟对象被拒绝(reject),failCallbacksare 会被调用。从 jQuery 1.7 开始,在迟延对象被受理(resolve)或被拒绝(reject)之前,deferred.notify()deferred.notifyWith() 方法会一直调用 progressCallbacks。

回调函数的执行顺序和它们被添加的顺序是一样的。由于 deferred.then 返回的是延迟对象,所以可以链接其它的延迟对象,包括额外的 .then() 方法。了解更多内容,请参见如下文档 延迟对象

示例:

由于 jQuery.get 方法返回 jqXHR 对象,该对象继承自延迟对象,所以我们可以添加 .then 方法。

jQuery 代码:

$.get("test.php").then(
    function(){ alert("$.get succeeded"); },
    function(){ alert("$.get failed!"); }
);