返回值:Deferreddeferred.done(doneCallbacks, [doneCallbacks])
添加延迟对象被受理(done)时执行的处理程序。
-
1.5 新增deferred.done(doneCallbacks, [doneCallbacks])
doneCallbacks (Function) 单个函数或函数数组,当延迟对象被受理(done)时调用。doneCallbacks (Function) 可选参数, 可选的额外的函数或函数数组,当延迟对象被受理(done)时调用。
deferred.done()
方法可以接受一个或多个参数,每个参数既可以是单个函数,也可以是一个函数数组。当延迟对象被受理(done)时,doneCallbacks 就会被调用。回调函数的执行顺序和它们被添加的顺序是一样的。由于 deferred.done()
返回的是延迟对象,所以可以链接其它的延迟对象,包括额外的 .done()
方法。当延迟对象被受理(done)时,doneCallbacks 就会被调用,并且可以使用传递给
resolve
或
resolveWith
方法的参数,按照它们被添加的顺序。了解更多内容,请参见如下文档 延迟对象。
示例:
由于 jQuery.get 方法返回 jqXHR 对象,该对象继承自延迟对象,所以我们可以使用 .done() 方法,添加一个成功时调用的回调函数。
jQuery 代码:
$.get("test.php").done(function() {
alert("$.get succeeded");
});
示例:
当用户点击按钮时,受理延迟对象,触发一系列回调函数:
<!DOCTYPE html>
<html>
<head>
<script src="jquery.min.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>