• 技术文章 >web前端 >js教程

    done和then的区别

    php中世界最好的语言php中世界最好的语言2018-03-15 15:12:45原创4462
    这次给大家带来done和then的区别,使用done和then的注意事项有哪些,下面就是实战案例,一起来看一下。

    jquery的deferred对象的done方法和then方法都能实现链式调用,但是他们的作用是有区别的,then方法中如果你传递的方法有返回值,那么他会传递给下一个链式调用的方法。而done方法与此相反,你传递的方法就算有返回值,done方法也不会把你的返回值传给下一个链式调用的方法的,

    话不多说,直接上实例:

    var defer = jQuery.Deferred();
    defer.done(function(a,b){
      console.log("a = " + a+"b = " + b);
      return a * b;
    }).done(function( result ) {
      console.log("result = " + result);
    }).then(function( a, b ) {
      console.log("a = " + a+"b = " + b);
      return a * b;
    }).done(function( result ) {
          console.log("result = " + result);
    }).then(function( a, b ) {
      console.log("a = " + a+"b = " + b);
      return a * b;
    }).done(function( result ) {
      console.log("result = " + result);
    });
    defer.resolve( 2, 3 );

    输出结果如下:

    结果分析:

    1、第一个done和第二个done都返回了defer.resolve( 2, 3 )

    2、done中callback的返回值不会被传递

    3、第二个done只有一个参数,接收了defer.resolve( 2, 3 )的第一个参数2,所以result是2

    4、第一个then接收defer.resolve( 2, 3 ),接收两个参数,result是6,同时新建一个deferred object,传递result给deferred object

    5、第三个done接收到了这个新的deferred object和传递的result,打印结果是6,并把这个新的deferred object传递给第二个then

    6、第二个then现在接收新的deferred object,它只有一个参数,是result,所以参数b没有定义,返回的结果是NaN,同时又新建一个deferred object

    7、第四个done接收一个新建的deferred object,传递的参数是NaN,打印的结果自然就是NaN

    相信看了本文案例你已经掌握了方法,更多精彩请关注php中文网其它相关文章!

    推荐阅读:

    jQuery的Validate插件怎样验证输入值

    jQuery EasyUI 折叠面板的使用

    以上就是done和then的区别的详细内容,更多请关注php中文网其它相关文章!

    声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn核实处理。
    专题推荐:done then 区别
    上一篇:侧边栏可伸缩效果 下一篇:禁止弹窗下底部页面滑动
    PHP编程就业班

    相关文章推荐

    • 图文详解JavaScript原型链• es6怎么判断数组是否含有某个子元素• es6中怎么将数组转为对象• es6怎么判断数组是否含有相同的值• Node.js中怎么发起HTTP请求?6种方法浅析

    全部评论我要评论

  • 取消发布评论发送
  • 1/1

    PHP中文网