JQ对象中的延迟对象deferred的详解

来源:互联网 发布:淘宝大学免费课程 编辑:程序博客网 时间:2024/05/18 01:09

在JQ的延迟对象中,$.deferred()有比较多的下辖对象,下面将解析有那些对象,先把deferred封装起来:

      var  def = $.deferred();

      $.deferred(fn)                               //  代表延迟执行开始前执行的对象fn()

      def.done(fn)                                 //   设定当延迟完成时要调用的对象fn()

      def.fail(fn)                                     //    设定当延迟完成使要调用的对象fn()

      $.get(....).then(fn1, fn2)              //    指定调用get时,不同情况下将调用不同的对象,如,调用成功则运行fn1,否则运行fn2;

      def.reject("abc")                          //    把def的状态设置成拒绝(失败)的状态,并赋予相应失败函数"abc"的参数;

      def.resolve("abc")                       //    把def的状态设置成接受(成功)的状态,并赋予相应成功函数"abc"的参数;

      $("").promise().done(fn)            //    promise是对目标队列执行情况的检测,一旦队列执行完成(或失败)则马上调用程序,其特点是不用建立延迟对象;如在$("")队列下执行的函数都执行后,将执行fn;

      def.always(fn)                             //    无论延迟对象执行的结果如何(成功或失败),都会执行函数fn;

      def.progress(fn)                         //    当deferred对象生成进度通知时添加被访问程序fn;

      def.notify("abc")                          //    与resolve或reject一样,notify改变延迟状态为进度通知状态,并赋予进度通知状态时所调用的函数以参数abc;

      def.state()                                   //    返回当前延迟函数的状态

      

延迟函数非常的有用,下面讲带上少量的script片段

<script>
$("button").bind( "click", function() {
  $("p").append( "Started...");
 
  $("div").each(function( i ) {
    $( this ).fadeIn().fadeOut( 1000 * (i+1) );
  });
 
  $( "div" ).promise().done(function() {                            //   一旦绑定的元素状态为完成时,马上触发
    $( "p" ).append( " Finished! " );
  });
});
</script>

0 0
原创粉丝点击