概述 deferred.done( doneCallbacks [, doneCallbacks ] )
返回值:Deferred Object
描述: 当Deferred(延迟)对象解决时,调用添加处理程序。
deferred.done()
方法接受一个或多个参数,所有这些都参数可以是一个单一的函数或一个函数数组。当Deferred(延迟)解决时,doneCallbacks被调用。回调是依照他们添加的顺序执行。一旦deferred.done()
返回Deferred(延迟)对象,Deferred(延迟)可以链接其它的延迟对象,包括增加额外的.done()
方法。当Deferred(延迟)解决,doneCallbacks执行,并且使用提供给resolve
或resolveWith
方法的参数,依照被添加的顺序调用。
示例
一旦jQuery.get
方法返回一个来自延迟的对象的jqXHR对象,我们可以附加一个成功回调使用.done()
方法。
$.get("test.php").done(function() {
alert("$.get succeeded");
});
当用户点击按钮时,受理延迟对象,触发一系列回调函数:
<!DOCTYPE html>
<html>
<head>
<script src="http://code.jquery.com/jquery-latest.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").bind("click", function() {
dfd.resolve("and");
});
</script>
</body>
</html>