【问题标题】:Deferreds vs $.ajax done/fail延迟与 $.ajax 完成/失败
【发布时间】:2016-05-18 11:50:26
【问题描述】:

对于独立的异步操作我应该使用什么?延迟对象还是 ajax done()/fail() 足够了?有什么区别?

我知道deferred.when() 很有用,因为它可以让我们知道所有多个异步操作何时完成。但是一个异步操作呢? done()/fail() 也让我知道它什么时候完成。

【问题讨论】:

  • $.ajax() 方法返回一个 $.Deferred() 对象。因此,您在所有情况下都使用延迟。您可以制作自己的延迟,但 ajax 会自动返回相同的。这仅适用于 jQuery,vanilla javascript 没有此功能
  • 我最好添加一个答案。

标签: jquery jquery-deferred


【解决方案1】:

$.ajax() 方法返回一个$.Deferred() 对象。因此,您在所有情况下都使用延迟。您可以制作自己的延迟,但 ajax 会自动返回相同的。这仅适用于 jQuery,vanilla javascript 没有此功能。

$.ajax() 将返回以下承诺方法:

fail()done()always()then()


Jquery 论坛怎么说:

从 jQuery 1.5 开始,由 $.ajax() 返回的 jqXHR 对象实现了 Promise 接口,为它们提供了 Promise 的所有属性、方法和行为

详细参考 jQuery $.ajax 可在此处获得,http://api.jquery.com/jQuery.ajax/

【讨论】:

    【解决方案2】:

    来自Documentation

    jQuery.Deferred() 对回调的方式进行了一些改进 被管理和调用。特别是,jQuery.Deferred() 提供 提供多个回调的灵活方式,这些回调可以 无论原始回调调度是否已被调用 已经发生了。

    还有:

    理解 Deferred 的一个模型是将其视为链感知函数包装器。

    就像你说的,最大的区别在于deferred.when 在处理多个请求时很有用。回答您的问题,对于独立操作,done()fail() 会做得很好,并且更容易实施,在我看来 c:

    【讨论】:

      猜你喜欢
      • 2013-04-26
      • 2012-08-22
      • 1970-01-01
      • 2012-12-07
      • 2012-05-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-03-25
      相关资源
      最近更新 更多