当前位置: 首页>>代码示例 >>用法及示例精选 >>正文


JQuery deferred.done()用法及代码示例


用法
deferred.done( doneCallbacks [, doneCallbacks ] ) => Deferred

说明:添加解析延迟对象时要调用的处理程序。

  • 添加的版本:1.5deferred.done( doneCallbacks [, doneCallbacks ] )

    • doneCallbacks
      类型:Function ()
      解析 Deferred 时调用的函数或函数数组。
    • doneCallbacks
      类型:Function ()
      解析 Deferred 时调用的可选附加函数或函数数组。

deferred.done() 方法接受一个或多个参数,所有参数都可以是单个函数或函数数组。解决 Deferred 后,将调用 doneCallbacks。回调按照添加的顺序执行。由于deferred.done() 返回延迟对象,因此延迟对象的其他方法可以链接到该对象,包括附加的.done() 方法。解决 Deferred 后,将使用提供给 resolve resolveWith 方法调用的参数按照添加的顺序执行 doneCallbacks。有关详细信息,请参阅 Deferred object 的文档。

例子:

由于 jQuery.get 方法返回一个 jqXHR 对象,该对象派生自 Deferred 对象,我们可以使用 .done() 方法附加一个成功回调。

$.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-3.5.0.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>

演示:

相关用法


注:本文由纯净天空筛选整理自jquery.com大神的英文原创作品 deferred.done()。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。