deferred.done()| jqueryAPI 2.2 中文手册- AspRain.cn 致力于Web开发技术翻译整理

jQuery API 2.2.0

deferred.done()

分类:Deferred对象

返回: Deferred

deferred.done( doneCallbacks [, doneCallbacks ] )

描述:添加处理函数,当Deferred对象被解决时调用它。

加入于: 1.5
deferred.done( doneCallbacks [, doneCallbacks ] )
  • doneCallbacks
    类型:Function()
    一个函数,或者函数数组,在Deferred对象被解决时调用它。
  • doneCallbacks
    类型:Function()
    可选的附加函数、或者函数的数组,在Deferred对象被解决时调用它。

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>

演示结果

如果网页上不能运行示例,请点击http://www.asprain.cn/jQueryAPI/deferred.done.htm查看示例。

如果你觉得本文档对你有用,欢迎给翻译作者支付宝打赏,支持翻译作者源源不断翻译更多有用的技术文档。