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>
演示结果