jQuery技术

JQuery的deferred对象学习总结

字号+ 作者:H5之家 来源:H5之家 2017-11-15 11:17 我要评论( )

什么是deferred? 可以帮助我们按规定的顺序执行函数,比如说我们ajax请求数据之后,对dom进行数据填充,那我们就要先执行完ajax,拿到数据之后才能进行dom数据

标签:err   事先   com   学习   执行顺序   实现   传统   category   color   

什么是deferred?

    可以帮助我们按规定的顺序执行函数,比如说我们ajax请求数据之后,对dom进行数据填充,那我们就要先执行完ajax,拿到数据之后才能进行dom数据填充,所以这就是一个顺序执行的过程,传统的做法是事先定义好回调函数,当检测到数据请求完成时,执行事先定义的回调函数。但是,在回调函数方面,jQuery的功能非常弱。为了改变这一点,jQuery开发团队就设计了deferred对象。帮助我们更好的控制函数执行顺序。

1.5版本后的jquery使用$.ajax()返回的是deferred对象

 

deferred常见用法:

  1.链式调用

 $.ajax("test.html")   .done(function(){ alert("哈哈,成功了!"); })   .fail(function(){ alert("出错啦!"); });

    当请求完成,执行done方法;当请求失败,执行fail方法。

 

 2.指定同一操作的多个回调函数

        deferred对象的一大好处,就是它允许你自由添加多个回调函数。而如果使用传统的回调函数,那么我们只能定义一个success方法。

    

  $.ajax("test.html")   .done(function(){ alert("哈哈,成功了!");} )   .fail(function(){ alert("出错啦!"); } )   .done(function(){ alert("第二个回调函数!");} );

      可以看到,我们调用了两个done方法,当请求成功时,会按他们调用的顺序来先后执行两个done方法。

 

3.为多个操作指定回调函数

  deferred对象的另一大好处,就是它允许你为多个事件指定一个回调函数,这是传统写法做不到的。

  $.when($.ajax("test1.html"), $.ajax("test2.html"))   .done(function(){ alert("哈哈,成功了!"); })   .fail(function(){ alert("出错啦!"); });

    可以看到,使用when方法,我们可以实现当两个ajax都成功时才执行done方法。

 

4.deferred对象不仅适用于ajax,任何本地操作你都可以使用deffer对象来控制你的方法执行顺序。

var wait = function (dtd) { var dtd = $.Deferred(); var tasks = function () { alert("任务完成!"); dtd.resolve("666"); }; setTimeout(tasks, 3000); return dtd; }; $.when(wait()) .done(function (info) { console.log(info); }) .fail() .always(function (info) { //不管成功或失败都会执行always方法 console.log(info); });

 

总结:deferred对象是jquery团队设计开发的一个对象,可以帮助我们实现函数按顺序调用。ajax使用deferred对象只是其中的一种用途,任何其他本地操作都能使用deferred对象。

     

JQuery的deferred对象学习总结

标签:err   事先   com   学习   执行顺序   实现   传统   category   color   

 

1.本站遵循行业规范,任何转载的稿件都会明确标注作者和来源;2.本站的原创文章,请转载时务必注明文章作者和来源,不尊重原创的行为我们将追究责任;3.作者投稿可能会经我们编辑修改或补充。

相关文章
  • 非法集资案件、金额首现“双降” 下月起开展专项排查

    非法集资案件、金额首现“双降” 下月起开展专项排查

    2017-11-09 10:01

  • wpython学习点滴记录

    wpython学习点滴记录

    2017-10-28 13:19

  • HTML5中的data-*属性

    HTML5中的data-*属性

    2017-09-20 16:36

  • 用JQuery实现ajax技术的常用方法

    用JQuery实现ajax技术的常用方法

    2017-09-04 11:00

网友点评