【问题标题】:Difference between using the new jQuery 1.6 $.animate "promise" and a callback?使用新的 jQuery 1.6 $.animate "promise" 和回调之间的区别?
【发布时间】:2011-05-03 19:32:30
【问题描述】:

请看这里:http://blog.jquery.com/2011/05/03/jquery-16-released/

这种新格式有什么区别:

$(".elements").fadeOut();

$.when( $(".elements") ).done(function( elements ) {
  // all elements faded out
});

和旧的:

$(".elements").fadeOut(function() { /* all elements faded out */});

【问题讨论】:

  • 没有承诺,但我可能会回调。 :]

标签: jquery jquery-deferred


【解决方案1】:

正如 Chad 所说,$.when 允许你传入一堆回调,一旦它们都完成,done 就会触发。

http://vimeo.com/22687950 是关于延迟的视频,大约 15 分钟标记 $.when() 被介绍。大约 20 分钟你会看到这个代码:

   var $balls = $(".bounceDemo"),
      a = $balls.eq(0).drop(500),
      b = $balls.eq(1).drop(2000),
      c = $balls.eq(2).drop(4000);
   $.when(a,b,c)
      .done(function(){
          //do something
      });

【讨论】:

    【解决方案2】:

    我知道的唯一区别是 $.when().done() 语法允许多个回调函数。而许多传递回调函数的“旧”方法需要 1 个函数对象。

    在您的示例中,我可以在 .done() 上调用 5 个不同的函数,而不仅仅是在动画完成时调用一个回调。您甚至可以使用 $.when().done() 语法 (deferred.done()) 传入一个函数对象数组。

    【讨论】:

      【解决方案3】:

      新格式使用deferred objects。它们最初是作为传统 AJAX 回调的更灵活替代方案引入的,因为它们提供了对回调链接和解析的更高级别的控制。

      事实证明,延迟对象非常有用,以至于许多人希望使用它们将动画链接到他们的 AJAX 应用程序逻辑中。从animate() 调用返回promise 到目前为止是possible but awkward。 jQuery 1.6 现在支持开箱即用。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2016-12-07
        • 2010-09-26
        • 2020-04-17
        • 2019-06-22
        相关资源
        最近更新 更多