时间:2021-05-26
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
以上这篇jquery中done和then的区别(详解)就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持。
声明:本页内容来源网络,仅供用户参考;我单位不保证亦不表示资料全面及准确无误,也不保证亦不表示这些资料为最新信息,如因任何原因,本网内容或者用户因倚赖本网内容造成任何损失或损害,我单位将不会负任何法律责任。如涉及版权问题,请提交至online#300.cn邮箱联系删除。
参考阅读:详解js中Number()、parseInt()和parseFloat()的区别详解JS转换数值函数Number()、parseInt()、parse
C++中cerr和cout的区别实例详解前言:cerrTheobjectcontrolsunbufferedinsertionstothestandarderr
AndroidMotionEvent中getX()和getRawX()的区别实例详解实例代码:publicclassResextendsActivityimpl
JavaComparable和Comparator的详解及区别Java中为我们提供了两种比较机制:Comparable和Comparator,他们之间有什么区别
$.attr()和$.data()本质上属于DOM属性和Jquery对象属性的区别。Jquery对象属性和DOM属性一个简单的例子Jquery中.attr和.d