deferred.done()

deferred.done( doneCallbacks [, doneCallbacks ] )返回类型:Deferred

描述: 添加延迟对象被解决时要调用的处理函数。

deferred.done()方法接受一个或多个参数,所有的参数都可以是一个函数或函数的数组。当延迟对象被解决时,就调用doneCallbacks。按添加回调函数的顺序执行它们。因为deferred.done()返回延迟对象,所以延迟对象的其它方法可以连缀到此方法后面,包括额外的.done()方法。当延迟对象被解决时,利用调用 resolve方法或resolveWith方法时所提供的参数,按它们添加的顺序,执行doneCallbacks。欲进一步了解,请参阅延迟对象

示例:

因为jQuery.get方法返回一个jqXHR对象,它派生自延迟对象,所以我们可以利用.done()方法附加一个success回调函数。

1
2
3
$.get( "test.php" ).done(function() {
alert( "$.get succeeded" );
});

当用户点击一个按钮时,解决一个延迟对象,触发一些回调函数:

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
31
32
33
34
35
36
37
38
39
40
41
42
43
44
<!doctype html>
<html lang="en">
<head>
<meta charset="utf-8">
<title>deferred.done demo</title>
<script src="https://code.jquery.com/jquery-1.10.2.js"></script>
</head>
<body>
<button>Go</button>
<p>Ready...</p>
<script>
// 3 functions to call when the Deferred object is resolved
function fn1() {
$( "p" ).append( " 1 " );
}
function fn2() {
$( "p" ).append( " 2 " );
}
function fn3( n ) {
$( "p" ).append( n + " 3 " + n );
}
// Create a deferred object
var dfd = $.Deferred();
// Add handlers to be called when dfd is resolved
dfd
// .done() can take any number of functions or arrays of functions
.done( [ fn1, fn2 ], fn3, [ fn2, fn1 ] )
// We can chain done methods, too
.done(function( n ) {
$( "p" ).append( n + " we're done." );
});
// Resolve the Deferred object when the button is clicked
$( "button" ).on( "click", function() {
dfd.resolve( "and" );
});
</script>
</body>
</html>

演示: