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