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

    xiaoxiao2026-09-28  9

    在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>

    转载请注明原文地址: https://ju.6miu.com/read-1312418.html
    最新回复(0)