📅  最后修改于: 2023-12-03 15:02:09.540000             🧑  作者: Mango
jQuery deferred对象是一个非常强大的异步编程工具,它可以让我们对异步任务进行更细致的控制和管理。其中,.done()方法就是其中非常重要的一个方法。
.done()方法用来为deferred对象注册成功的回调函数,这些回调函数会在异步任务成功完成时被调用。也就是说,当deferred对象的状态变为resolved时,.done()注册的回调函数会被调用。
deferred.done(callbacks)
参数callbacks是一个函数或一组函数,表示成功回调函数。这些函数会在异步任务成功完成时被依次调用。
.done()方法还有一个变体,可以同时注册成功和失败的回调函数:
deferred.done(successCallbacks).fail(failureCallbacks)
我们可以这样理解这个语法格式:先注册成功回调函数successCallbacks,如果异步任务成功完成,则调用这些回调函数;如果异步任务失败,则调用失败回调函数failureCallbacks。
.done()方法返回的仍然是原来的deferred对象,因此可以实现链式调用。
下面以一个简单的例子来演示.done()方法的使用:
function wait(ms) {
var deferred = $.Deferred();
setTimeout(() => {
deferred.resolve();
}, ms);
return deferred;
}
$.when(wait(1000)).done(() => {
console.log('async task is done');
});
这个例子中,wait(ms)是一个自定义的异步任务函数,表示等待ms毫秒后任务完成。我们可以使用.done()方法来注册成功回调函数,在任务完成后打印一句话。
.done()方法是jQuery deferred对象中非常重要的一个方法,它可以让我们更加精细地控制异步任务的完成情况。我们可以使用.done()方法来注册成功回调函数,当异步任务成功完成时,这些回调函数会被立即调用。同时,也可以通过.fail()方法来注册失败回调函数,实现成功/失败回调函数的统一管理。