首页 > Web开发 > 详细

拥抱基于jquery.deferred的ajax,和层层嵌套回调的ajax说拜拜

时间:2016-11-30 01:49:20      阅读:338      评论:0      收藏:0      [点我收藏+]

前言

在项目中,无论是维护自己的代码,还是重构他人的项目代码,看到层层嵌套,异常冗余的某个function,那时我们的内心肯定是奔溃的!

在jquery1.5版本之前,如果我们某个操作需要多个ajax异步请求成功后执行,只能在前一个ajax成功的回调函数中接着发送ajax请求,这样一来,不光代码的可读性变得异常差,而且也失去了异步的意义。

jquery开发者果然在1.5版本后引入了deferred延迟对象。而jquery.ajax也基于它迎来了巨变,我们先对比下有哪些区别。

传统ajax和现代ajax

传统ajax写法:

  $.ajax({
    url: "xx.html",
       data :{},
    success: function(){
      alert("成功了!");
    },
    error:function(){
      alert("出错啦!");
    complete:function(){
      alert("啦啦啦!");
    }   });

现代ajax写法:

  $.ajax({
    url: "xx.html",
       data :{}
   })
.done( function(){
      alert("成功了!");
      })
.fail(function(){
      alert("出错啦!");
      })
.always(function(){
      alert("啦啦啦!");
    })

 

 基于现代ajax写法的$.when()方法

var ajax1= $.ajax({
                     url:‘xx.php‘,
                     data:{}
                    });
 var ajax2= $.ajax({
                     url:‘xxx.php‘,
                     data:{}
                    });    
var ajax3= $.ajax({
                     url:‘xxxx.php‘,
                     data:{}
                    });        
 $.when(ajax1,ajax2,ajax3)
      .done(function(a,b,c){
                   //dosomething
           })
       .fail(function(a,b,c){
                 //dosomething
            });              

 

 完美解决异步层层嵌套的问题,可读性大大提高。至于$.when(args)中的args,也就是a,b,c具体是什么,有兴趣的可以去打印出来看看哦

拥抱基于jquery.deferred的ajax,和层层嵌套回调的ajax说拜拜

原文:http://www.cnblogs.com/web-MrShi/p/6115438.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!