當前位置: 首頁>>代碼示例 >>用法及示例精選 >>正文


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()。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。