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点赞功能实现代码 点个赞吧!
May 29 jQuery
jQuery.ajax向后台传递数组问题的解决方法
May 12 jQuery
jQuery 实现双击编辑表格功能
Jun 19 jQuery
jQuery EasyUI结合zTree树形结构制作web页面
Sep 01 jQuery
jQuery EasyUI开发技巧总结
Sep 26 jQuery
jQuery实现点击下拉框中的值累加到文本框中的方法示例
Oct 28 jQuery
jQuery实现鼠标响应式淘宝动画效果示例
Feb 13 jQuery
jQuery实现遍历XML节点和属性的方法示例
Apr 29 jQuery
jQuery实现基本隐藏与显示效果的方法详解
Sep 05 jQuery
jQuery实现的中英文切换功能示例
Jan 11 jQuery
layui+jquery支持IE8的表格分页方法
Sep 28 jQuery
jquery轮播图插件使用方法详解
Jul 31 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
编写漂亮的代码 - 将后台程序与前端程序分开
2008/04/23 PHP
PHP 冒泡排序算法的实现代码
2010/08/08 PHP
php中sprintf与printf函数用法区别解析
2014/02/17 PHP
PHP轻量级数据库操作类Medoo增加、删除、修改、查询例子
2014/07/04 PHP
PHP SplObjectStorage使用实例
2015/05/12 PHP
PHP常用字符串操作函数实例总结(trim、nl2br、addcslashes、uudecode、md5等)
2016/01/09 PHP
PHP与Ajax相结合实现登录验证小Demo
2016/03/16 PHP
Zend Framework动作控制器用法示例
2016/12/09 PHP
PHP面向对象之事务脚本模式(详解)
2017/06/07 PHP
PHP实现阿里大鱼短信验证的实例代码
2017/07/10 PHP
用JQuery 实现的自定义对话框
2007/03/24 Javascript
jQuery中removeProp()方法用法实例
2015/01/05 Javascript
js计算任意值之间随机数的方法
2015/01/16 Javascript
js实现跨域访问的三种方法
2015/12/09 Javascript
bootstrap导航、选项卡实现代码
2016/12/28 Javascript
vue 根据数组中某一项的值进行排序的方法
2018/08/30 Javascript
[48:48]完美世界DOTA2联赛PWL S3 Magama vs GXR 第一场 12.19
2020/12/24 DOTA
Python之父谈Python的未来形式
2016/07/01 Python
Python的面向对象编程方式学习笔记
2016/07/12 Python
python xlsxwriter创建excel图表的方法
2018/06/11 Python
Python 爬虫之Beautiful Soup模块使用指南
2018/07/05 Python
Python shelve模块实现解析
2019/08/28 Python
Python实现PS滤镜中的USM锐化效果
2020/12/04 Python
详解background属性的8个属性值(面试题)
2020/11/02 HTML / CSS
如何让pre和textarea等HTML元素去掉滚动条自动换行自适应文本内容高度
2019/08/01 HTML / CSS
时尚孕妇装:HATCH Collection
2019/09/24 全球购物
请写出 float x 与"零值"比较的 if 语句
2016/01/04 面试题
大学生志愿者感言
2014/01/15 职场文书
团委书记的竞聘演讲稿
2014/04/24 职场文书
小学英语教师先进事迹
2014/05/28 职场文书
2014年城市管理工作总结
2014/12/02 职场文书
企业开业庆典答谢词
2015/01/20 职场文书
搞笑婚前保证书
2015/02/28 职场文书
张丽莉观后感
2015/06/16 职场文书
2016年安全生产先进个人事迹材料
2016/02/29 职场文书
利用Nginx代理如何解决前端跨域问题详析
2021/04/02 Servers