jquery中done和then的区别(详解)


Posted in jQuery onDecember 19, 2017

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 );

输出结果如下:

jquery中done和then的区别(详解)

结果分析:

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的区别(详解)就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

jQuery 相关文章推荐
jQuery、layer实现弹出层的打开、关闭功能
Jun 28 jQuery
jquery实现点击a链接,跳转之后,该a链接处显示背景色的方法
Jan 18 jQuery
jquery+css3实现熊猫tv导航代码分享
Feb 12 jQuery
jQuery实现左右滑动的toggle方法
Mar 03 jQuery
jquery点击回车键实现登录效果并默认焦点的方法
Mar 09 jQuery
学习jQuery中的noConflict()用法
Sep 28 jQuery
jQuery实现简单的Ajax调用功能示例
Feb 15 jQuery
jquery实现选项卡切换代码实例
May 14 jQuery
JQuery animate动画应用示例
May 14 jQuery
JQuery省市联动效果实现过程详解
May 08 jQuery
jQuery实现简单QQ聊天框
Aug 27 jQuery
JQuery使用数组遍历跳出each循环
Sep 01 jQuery
jQuery实现弹窗下底部页面禁止滑动效果
Dec 19 #jQuery
jQuery实现点击DIV同时点击CheckBox,并为DIV上背景色的实例
Dec 18 #jQuery
HTML5+JS+JQuery+ECharts实现异步加载问题
Dec 16 #jQuery
利用JQUERY实现多个AJAX请求等待的实例
Dec 14 #jQuery
jquery获取transform里的值实现方法
Dec 12 #jQuery
jquery手机触屏滑动拼音字母城市选择器的实例代码
Dec 11 #jQuery
jQuery实现简单的下拉菜单导航功能示例
Dec 07 #jQuery
You might like
全国FM电台频率大全 - 26 西藏自治区
2020/03/11 无线电
PHP利用header跳转失效的解决方法
2014/10/24 PHP
一个简单安全的PHP验证码类 附调用方法
2016/06/24 PHP
PHP模糊查询的实现方法(推荐)
2016/09/06 PHP
PHP房贷计算器实例代码,等额本息,等额本金
2017/04/01 PHP
php实现的rc4加密解密类定义与用法示例
2018/08/16 PHP
laravel接管Dingo-api和默认的错误处理方式
2019/10/25 PHP
如何使用Javascript获取距今n天前的日期
2013/07/08 Javascript
简单掌握JavaScript中const声明常量与变量的用法
2016/05/21 Javascript
JavaScript如何实现跨域请求
2016/08/05 Javascript
关于javascript获取内联样式与嵌入式样式的实例
2017/06/01 Javascript
基于layui实现高级搜索(筛选)功能
2019/07/26 Javascript
Vue 实现可视化拖拽页面编辑器
2021/02/01 Vue.js
玩转python爬虫之爬取糗事百科段子
2016/02/17 Python
深入理解Python装饰器
2016/07/27 Python
python-opencv在有噪音的情况下提取图像的轮廓实例
2017/08/30 Python
Python基于ThreadingTCPServer创建多线程代理的方法示例
2018/01/11 Python
使用python装饰器计算函数运行时间的实例
2018/04/21 Python
Python 一句话生成字母表的方法
2019/01/02 Python
扩展Django admin的list_filter()可使用范围方法
2019/08/21 Python
Python3.6+selenium2.53.6自动化测试_读取excel文件的方法
2019/09/06 Python
将python2.7添加进64位系统的注册表方式
2019/11/20 Python
Pytest框架之fixture的详细使用教程
2020/04/07 Python
Jupyter加载文件的实现方法
2020/04/14 Python
Python Selenium库的基本使用教程
2021/01/04 Python
如何用Python徒手写线性回归
2021/01/25 Python
Sport-Thieme荷兰:购买体育用品
2019/08/25 全球购物
预备党员思想汇报
2014/01/08 职场文书
交通文明倡议书
2014/05/16 职场文书
校园绿化美化方案
2014/06/08 职场文书
社区党员群众路线教育实践活动心得体会
2014/11/03 职场文书
2014年电教工作总结
2014/12/19 职场文书
小学老师对学生的评语
2014/12/29 职场文书
2016年植树节红领巾广播稿
2015/12/17 职场文书
Android Studio实现简易进制转换计算器
2022/05/20 Java/Android
Python创建SQL数据库流程逐步讲解
2022/09/23 Python