deferred.then( doneFilter [, failFilter ] [, progressFilter ] )返回类型:Promise
描述:添加延迟对象在被解决、被拒绝或依然处于进程时要调用的处理函数。
-
增补版本:1.8deferred.then( doneFilter [, failFilter ] [, progressFilter ] )
-
增补版本:1.5, removed: 1.8deferred.then( doneCallbacks, failCallbacks )
-
增补版本:1.7, removed: 1.8deferred.then( doneCallbacks, failCallbacks [, progressCallbacks ] )
在jQuery 1.8以前,此参数可以是一个函数,或是函数的数组。
对于所有签名,如果所有的回调函数类型都不想要,参数可以是null
。也可以使用.done()
、.fail()
或.progress()
来设置一种回调函数类型,而不筛选状态或值。
自从jQuery 1.8以来,deferred.then()
方法返回一个新的应答对象,可以通过一个函数筛选延迟对象的状态和值,替代现在已经淘汰的deferred.pipe()
方法。doneFilter
和failFilter
函数筛选了原始的延迟对象的已解决、已拒绝状态和值。progressFilter
函数筛选了任何对原始延迟对象的notify
方法或notifyWith
方法的调用。这些筛选器函数可以返回一个新值,沿着应答对象的.done()
回调函数或.fail()
回调函数传递,或者它们可以返回另一个可监视的对象(延迟对象,应答对象,等等),这些对象将把它们的已解决、已拒绝状态和值传递给此应答对象的回调函数。如果所用的筛选器函数是null
或者未指定,应答对象在被解决或被拒绝时,会用与原始值相同的值。
按添加回调函数的顺序执行它们。因为deferred.then
返回一个应答对象,所以应答对象的其它方法可以连缀在它后面,包括额外的.then()
方法。
示例:
因为jQuery.get
方法返回一个jqXHR对象,它派生自延迟对象,所以我们可以用.then
方法来附加处理函数。
1
2
3
4
5
6
7
|
|
筛选解决值:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
|
|
演示:
筛选拒绝值:
1
2
3
4
5
6
7
8
9
|
|
连缀任务:
1
2
3
4
5
6
7
8
|
|