【问题标题】:$.ajax().promise, what does it return?$.ajax().promise,它返回什么?
【发布时间】:2015-07-24 17:30:02
【问题描述】:

我正在浏览 rxJs,自动完成 exampleflatMapLatest 的参数函数返回 $.ajax().promise。什么意思?

我遇到过使用$.ajax.done, then, fail 的代码。但是 promise 函数返回什么?

代码块是,

$.ajax({
      url: 'http://en.wikipedia.org/w/api.php',
      dataType: 'jsonp',
      data: {
        action: 'opensearch',
        format: 'json',
        search: global.encodeURI(term)
      }
    }).promise()

【问题讨论】:

  • 您的第一站:The documentation.
  • 旁注:.promise() 绝对没有任何意义。您可以简单地删除它,原因有两个:1. 您没有使用任何返回值(.then 等),以及 2. 即使您使用了,那些已经在 jqXHR 对象上 ajax 返回无论如何。

标签: jquery ajax promise rxjs


【解决方案1】:

使用.promise() 方法的一个常见目标是防止某些方法的客户端(调用者)解析 Deferred 对象:无法控制 Promise 的状态。

然而,在这种情况下,其目的充其量是不清楚的:jqXHR 对象无法成功解析(但它可以被中止,因此严格来说它不是Promise)。尽管如此,在您的示例中,结果甚至没有被使用或返回。

【讨论】:

  • 是的,删除 .promise.. 后功能仍然完好无损
【解决方案2】:

$.ajax() 返回的 jqXHR 对象实现了 Promise 接口,为它们提供了 Promise 的所有属性、方法和行为。这些方法采用一个或多个在 $.ajax() 请求终止时调用的函数参数。这允许您在单个请求上分配多个回调,甚至在请求完成后分配回调。

http://api.jquery.com/category/deferred-object/

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2022-12-09
    • 2020-07-25
    • 2020-04-11
    • 2020-02-01
    • 2015-11-10
    • 2018-10-10
    • 2012-10-27
    • 2018-09-25
    相关资源
    最近更新 更多