返回值:Deferreddeferred.then(doneCallbacks, failCallbacks)
添加当延迟对象被受理(resolve)或被拒绝(reject)时调用的处理程序。
-
1.5 新增deferred.then(doneCallbacks, failCallbacks)
doneCallbacks (Function) 单个函数或函数数组,当延迟对象被受理(resolve)时调用。failCallbacks (Function) 单个函数或函数数组,当延迟对象被拒绝(reject)时调用。 -
1.7 新增deferred.then(doneCallbacks, failCallbacks, [progressCallbacks])
doneCallbacks (Function) 单个函数或函数数组,当延迟对象被受理(resolve)时调用。failCallbacks (Function) 单个函数或函数数组,当延迟对象被拒绝(reject)时调用。progressCallbacks (Function) 可选参数, 单个函数或函数数组,当延迟对象通知进度(progress)时被调用。
所有的参数(包括从 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!"); }
);