jquery通过deferred对象管理ajax异步_jquery

jquery通过deferred对象管理ajax异步_jquery

ID:30777569

大小:69.00 KB

页数:6页

时间:2019-01-03

jquery通过deferred对象管理ajax异步_jquery_第1页
jquery通过deferred对象管理ajax异步_jquery_第2页
jquery通过deferred对象管理ajax异步_jquery_第3页
jquery通过deferred对象管理ajax异步_jquery_第4页
jquery通过deferred对象管理ajax异步_jquery_第5页
资源描述:

《jquery通过deferred对象管理ajax异步_jquery》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库

1、jQuery通过deferred对象管理ajax异步今天跟大家分享一个jquery中的对象-deferred。其实从jQuery1.5.0版本开始引入的一个新功能----deferred对彖。不过可能在实际开发过程小用到的并不多,所以没有太在意。什么是deferred对象?开发网站的过程屮,我们经常遇到某些耗吋很长的javascript操作。其屮,既有异步的操作(比如ajax读取服务器数据),也有同步的操作(比如遍历一个大型数组),它们都不是立即能得到结果的。通常的做法是,为它们指定回调函数(callback)o即事先规定,一旦它们运行结束,应该调用哪些函数。但是,在回调函数方面,j

2、Query的功能非常弱。为了改变这一点,jQuery开发团队就设计了deferred对象。简单说,deferred对象就是jQucry的回调函数解决方案。在英语中,defer的意思、是〃延迟〃,所以deferred对象的含义就是〃延迟〃到未来某个点再执行。这里先不说deferred的概念,我们先看一个例了。述记得初学的吋候,遇到一个实例,先是要ajax请求一个接口(a.json),从返回的数据中获得一个idl值。然后再请求一个接口(b.json)获得id2,最后需要对这两个id值同时进行操作。错误解法那个时候初学,首先想到的方案(现在想想,很傻很犬真・・・)varidl,id2;$.

3、ajax({url:'a.js',dataType:'json',type:'get',success:function(d){idl=d.item・id;}});$.ajax({url:'b.js',dataType:'json',type:'get',success:function(d){id2=d.item・id;}})alertCidl=,+idl+',‘+'id2二'+id2);因为那个时候,还没有理解异步的概念,所以以为,第二次ajax的时候id已经有值了,但是运行之后才发现,变量id其实根本没被赋值。想要测试上面代码,点这里也就是这一刻,我真正明白了:ajax是异步的

4、!!!。傻瓜式解法发现上面那个方法不能用之后,分析了一下,弹岀undefined是因为弹岀之前id还没有被赋值,那我保证在弹出之前给id赋值不就解决了吗?好的,于是我想到了下面这个方法:varidl;$.ajax({url:'/test/json/a.js',dataTypc:'json',type:'get',success:function(d){idl二d.item,id;$.ajax({url:'/test/json/b・js',dataType:'json',type:'get',success:function(f){id2二f・item,id;alert('idl二'+

5、idl+',‘+'id2=,+id2);}});}})逻辑虽然止确了,但总觉得怪怪的,如果这里需要欧套3层呢?4层呢?。。。ajax里而嵌套ajax,如果数据很多,访问速度慢,嵌套更多层,会导致性能下降、影响用户体验、代码不好维护等等问题。所以一般不推荐这种方法。总之,这种写法让我难以接受。所以思来想去,觉得不妥。。。然后那个时候就在一个前端群里,询问各种大牛,直到一个大牛告诉我让我百度一下deferred,后来认真学习了下,觉得不错。使用deferred对象deferred对象简介deferred是jquery中的扩展的一个对象(1.5.0以上的版本支持deferred)。defe

6、r的意思是〃延迟〃,所以deferred对象的含义就是〃延迟〃到未來某个点再执行。简单说,deferred对象就是jQuery的冋调函数解决方案。再简单说,deferred对象用来管理异步操作,而ajax就是一种异步操作。deferred基本语法deferred让ajax支持新的写法,代码如下:$•ajax({url:'/test/json/a.js',dataType:'json',type:,get,})・done(function(){alert(,z成功啦!“);})・fail(function(){alert(z,失败了…;})这个大家应该都知道。现在在编辑器敲入ajax,

7、然后冋车,提示的ajax语法结构就是这样链式的写法。done函数就是ajax请求成功的回到函数;fail函数就是ajax请求失败的回调函数。使用deferred的解决方法varajaxl=$・ajax({url:'/test/json/a・js',dataType:'json',type:,get'});varajax2=$.ajax({url:'/test/json/b.js,,dataType:'json',type:,gct,,});$.when(a

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。