2

我在缓存 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
  ]
4

1 回答 1

2

从 1.0.7/1.1.5 版本开始,它看起来$http只支持 GET 方法请求的缓存。

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

$http 文档的缓存部分仅提到 GET 请求被缓存。

于 2013-05-28T05:35:30.497 回答