📜  jQuery deferred.done() 方法(1)

📅  最后修改于: 2023-12-03 15:02:09.540000             🧑  作者: Mango

jQuery deferred.done()方法

介绍

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()方法来注册失败回调函数,实现成功/失败回调函数的统一管理。