• 首页
  • vue
  • TypeScript
  • JavaScript
  • scss
  • css3
  • html5
  • php
  • MySQL
  • redis
  • jQuery
  • deferred.done()

    当Deferred对象解决时,调用的处理程序。

    deferred.done(doneCallbacks[, doneCallbacks ])
    • doneCallbacks类型:Function()。一个函数,或者函数数组,当Deferred对象得到解决时被调用。
    • doneCallbacks类型:Function()。可选的一个函数,或者函数数组,当Deferred对象得到解决时被调用。

    deferred.done()方法接受一个或多个参数,所有这些都参数可以是一个单一的函数或一个函数数组。当Deferred(延迟)解决时,doneCallbacks被调用。回调是依照他们添加的顺序执行。deferred.done()返回Deferred对象,Deferred(延迟)可以链接其它的延迟对象,包括增加额外的.done()方法。当Deferred(延迟)解决,doneCallbacks执行,并且使用提供给resolveresolveWith方法的参数,依照被添加的顺序调用。

    例子

    jQuery.get方法返回一个来自延迟的对象的jqXHR对象,我们可以附加一个成功回调使用.done()方法。

    $.get("test.php").done(function() {
      alert("$.get succeeded");
    });
    

    当用户点击按钮时,受理延迟对象,触发一系列回调函数:

    <!DOCTYPE html>
    <html>
    <head>
      <script src="https://www.lanmper.cn/static/js/jquery-3.5.0.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").on("click", function() {
      dfd.resolve("and");
    });
    </script>
     
    </body>
    </html>
    

    Ready...

    上篇:deferred.state()

    下篇:deferred.fail()