三十、deferred

adgjlxxx 2013-05-13

JQuery的1.5之后提供了Deferred和Promise两个对象来处理相应的同步请求
在1.5之前,当调用了一个ajax之后,会返回xhRequest。在1.5之后就返回promise对象,
promise对象可以来获取不同情况的处理方式

//调用ajax之后返回的是一个promise对象。可以通过这个对象来进行成功或者失败之后回调处理
//var promise = $.ajax("02.html",{dataType:"html"});
//使用promise对象可以设定在执行完成和失败的操作
/*promise.done(function(data){
    //成功的时候处理的操作
    alert(data);
    alert(($(data).filter("h1")).length);
   
}).fail(function(data){
    //失败的时候处理的操作
}).done(function(data){
    //使用这种方式,可以执行多个回调函数操作
    $("body").html($(data).filter("h1").html());
});*/

//可以使用then来替换done和fail,第一个参数就是成功之后的操作
//第二个参数就是失败之后的处理函数
/*promise.then(function(data){
    alert(data);
},function(data){
    alert(data);
})*/

//可以使用when来指定在多个ajax程序执完毕行之后才进行操作
/**
可以传入多个调用,在处理的时候可以通过多个参数来接受信息
**/
var promise = $.when($.ajax("02.html",{dataType:"html"})
        ,$.ajax("03.html",{dataType:"html"}));

promise.done(function(data1,data2){
    alert(data1);
    alert(data2);
}).fail(function(){
   
})

相关推荐