deferred.done()
分类:Deferred对象
返回: Deferred
deferred.done( doneCallbacks [, doneCallbacks ] )
描述:添加处理函数,当Deferred对象被解决时调用它。
加入于: 1.5
deferred.done( doneCallbacks [, doneCallbacks ] )deferred.done()方法接受一个或多个参数,所有的参数要么是一个函数,要么是多个函数构成的数组。当Deferred对象被解决时,会调用doneCallbacks。会按添加的顺序执行回调函数。因为deferred.done()方法返回Deferred对象,所以别的Deferred对象的方法可以连缀在这个后面,包括额外的.done()方法。一旦Deferred被解决了,会按照添加它们的顺序执行doneCallbacks回调函数,使用提供给调用.resolve()方法或.resolveWith()方法的参数。欲得更多信息,参见Deferred对象。
示例
因为jQuery.get方法返回一个jQXHR对象,它派生自一个Deferred对象,所以我们可以使用.done()方法给它附加一个success回调函数。
$.get( "test.php" ).done(function() {
alert( "$.get succeeded" );
});
当用户点击一个按钮时,解决一个Deferred对象,触发一些回调函数:
<!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>
// 当Deferred对象被解决时,调用三个函数
function fn1() {
$( "p" ).append( " 1 " );
}
function fn2() {
$( "p" ).append( " 2 " );
}
function fn3( n ) {
$( "p" ).append( n + " 3 " + n );
}
// 创建一个Deferred对象
var dfd = $.Deferred();
// 添加要在当Deferred对象被解决时调用的处理函数
dfd
// .done()可以取用任何数量的函数,或者函数的数组
.done( [ fn1, fn2 ], fn3, [ fn2, fn1 ] )
// 我们也可以连缀done()方法
.done(function( n ) {
$( "p" ).append( n + " we're done." );
});
// 当按钮被点击时,解决Deferred对象
$( "button" ).on( "click", function() {
dfd.resolve( "and" );
});
</script>
</body>
</html>
演示结果