网站链接: 我爱捣鼓
当前位置: 首页 > 前端开发  > jQuery

举实例让你搞清楚jQuery deferred对象

2021/10/26 21:47:18

什么是deferred对象? 简单说,deferred对象就是jQuery的回调函数解决方案。deferred对象的含义就是"延迟"到未来某个点再执行。 开发过程中,我们经常遇到某些耗时很长的javascript操作。其中有异步的操作(比如ajax读取服务器数据),也有同步的…

什么是deferred对象?

        简单说,deferred对象就是jQuery的回调函数解决方案。deferred对象的含义就是"延迟"到未来某个点再执行。

        开发过程中,我们经常遇到某些耗时很长的javascript操作。其中有异步的操作(比如ajax读取服务器数据),也有同步的操作(比如遍历一个大型数组),它们都不是立即能得到结果的。

        通常的做法是,为它们指定回调函数(callback)。即事先规定,一旦它们运行结束,应该调用哪些函数。

        但是,在回调函数方面,jQuery的功能非常弱。为了改变这一点,jQuery开发团队就设计了deferred对象。

下面我们就通过实例来看看jQuery deferred对象如何使用?

  var dtd = $.Deferred(); // 新建一个deferred对象
  var wait = function(dtd){
    var tasks = function(){
      alert("执行完毕!");
      dtd.resolve(); // 改变deferred对象的执行状态
    };
    setTimeout(tasks,5000);
    return dtd;
  };
  $.when(wait(dtd))
  .done(function(){ alert("哈哈,成功了!"); })
  .fail(function(){ alert("出错啦!"); });

        上面就是一个典型的jQuery deferred对象使用的例子,wait函数成功执行就回调done函数,如果失败就回调fail函数。是不是觉的逻辑很清晰。

上面例子中的resolve方法是做什么用的?

        jQuery规定,deferred对象有三种执行状态----未完成,已完成和已失败。如果执行状态是"已完成"(resolved),deferred对象立刻调用done()方法指定的回调函数;如果执行状态是"已失败",调用fail()方法指定的回调函数;如果执行状态是"未完成",则继续等待,或者调用progress()方法指定的回调函数(jQuery1.7版本添加)。

        通过以上内容让我们更深入的了解了jQuery deferred对象,感谢您访问“我爱捣鼓(www.woaidaogu.com)”网站的内容,希望对大家有所帮助!引用本文内容时,请注明出处!谢谢合作!

相关资讯

    暂无相关的数据...