【问题标题】:AngularJS $http.jsonp cacheAngularJS $http.jsonp 缓存
【发布时间】:2013-05-28 13:35:30
【问题描述】:

我在缓存 JSONP 请求时遇到问题。

我尝试了$http.jsonp(url, { cache: true }),但它似乎不起作用。

我也试过$http({ method: 'JSONP', url: url, cache: true }),但无济于事。

相反,我采用了手动缓存结果(下面是非常粗略的工作示例)。

AngularJS 可以为我做这种缓存吗?

countries.factory 'Wikipedia',
  ['$http', '$q', ($http, $q) ->
    cache = {}

    getSummary: (country) ->
      if cache.hasOwnProperty(country)
        cache[country]
      else
        summary = $q.defer()
        url = "http://en.wikipedia.org/w/api.php?action=query&prop=revisions&rvprop=content&rvsection=0&rvparse=1&titles=#{country}&format=json&redirects=1&callback=JSON_CALLBACK"

        $http.jsonp(url).success (data) ->
          # process data ....
          paragraphs = ['p1', 'p2']

          # return summary content paragraphs
          cache[country] = paragraphs
          summary.resolve paragraphs

        summary.promise
  ]

【问题讨论】:

  • “不工作”是指您在检查员中看到多个请求?有一个 repro fiddle/plnker?

标签: javascript angularjs coffeescript


【解决方案1】:

从 1.0.7/1.1.5 版本开始,$http 似乎只支持缓存 GET 方法请求。

  • Here 是一个关于它的开放 github 问题的链接。
  • Here 是一个封闭的拉取请求,包含一些额外的信息。

$http documentation 的缓存部分仅提及 GET 请求被缓存。

【讨论】:

    猜你喜欢
    • 2015-12-15
    • 1970-01-01
    • 1970-01-01
    • 2013-11-05
    • 2012-08-17
    • 2014-04-23
    • 2015-08-27
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多