jQuery的deferred对象详解
今天介绍jQuery1.5.0版本引入的一个新功能--Deferred.
一,什么是Deferred对象?
开发网站中经常有一些耗时操作,这些耗时操作既有异步操作(ajax读取服务器数据),也有同步操作(遍历一些大型数组),通常这些操作不能马上得到结果,我们这时候就会用回调函数(callback),原来jQuery对回调函数方面的功能比较弱,于是有了Deferred。所以说Deferred是jQuery的异步回调解决方案。
二,ajax链式写法
jQuery的ajax操作的传统写法:
$.ajax({ url: "test.php", success: function(){ alert("哈哈,成功了!"); }, error:function(){ alert("出错啦!"); } });
在jQuery1.5.0以下版本$.ajax()返回的xhr对象,没有链式写法,jQuery1.5.0以上版本支持链式写法。
$.ajax('test.php').done(function() { alert('成功'); }).fail(function() { alert('失败'); });
可以看到,done()相当于success方法,fail()相当于error方法。采用链式写法以后,代码的可读性大大提高。
三、为同一操作指定多个回调函数
很简单,还是以上面的代码为例,直接把它加在后面就行了。
$.ajax('test.php').done(function() { alert('成功'); }).fail(function() { alert('失败'); }).done(function(){ alert('成功2'); });
四、为多个操作指定回调函数
deferred对象的另一大好处,就是它允许你为多个事件指定一个回调函数。
$.when($.ajax('test1.php'),$.ajax('test2.php')).done(function() { alert('成功'); }).fail(function() { alert('失败'); });
这段代码的意思是,如果$.ajax('test1.php')和$.ajax('test2.php')都成功了,就执行done()指定的回调函数;如果有一个失败或都失败了,就执行fail()指定的回调函数。
相关推荐
ChinaGuanq 2020-06-08
lipin 2020-11-03
88254251 2020-11-01
VitaLemon 2020-10-15
PinkBean 2020-08-19
sfkong 2020-08-02
yanchuncheng 2020-07-30
doupoo 2020-07-28
bowean 2020-07-08
88520191 2020-07-05
Magicsoftware 2020-06-11
angqiuli 2020-06-06
whynotgonow 2020-06-06
whynotgonow 2020-06-03
陈旭阳 2020-06-02
airfling 2020-05-31
88520191 2020-05-20
RainyX 2020-05-19
89500297 2020-05-16