Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angularjs/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 异步$cacheFactory,带有$http和$resource_Javascript_Angularjs_Http_Cachefactory - Fatal编程技术网

Javascript 异步$cacheFactory,带有$http和$resource

Javascript 异步$cacheFactory,带有$http和$resource,javascript,angularjs,http,cachefactory,Javascript,Angularjs,Http,Cachefactory,我正在尝试使用$cacheFactory在$resource之上实现异步缓存 在$http源代码中,它似乎支持从缓存返回承诺。我会假设,在那之后,我可以简单地用缓存数据解决这个承诺,或者拒绝它,让$http做它的事情,然后将数据放回缓存中。问题是。。我就是不工作。$http实际上支持承诺吗 这是$http处理缓存,正如您所看到的,它实际上检查承诺是否返回(第898行)。但是,解析或拒绝似乎都只是从挂起队列中清除请求。如何实际发送数据或单个$http以继续请求 这里有一个关于我要完成的事情的例子

我正在尝试使用$cacheFactory在$resource之上实现异步缓存

在$http源代码中,它似乎支持从缓存返回承诺。我会假设,在那之后,我可以简单地用缓存数据解决这个承诺,或者拒绝它,让$http做它的事情,然后将数据放回缓存中。问题是。。我就是不工作。$http实际上支持承诺吗

这是$http处理缓存,正如您所看到的,它实际上检查承诺是否返回(第898行)。但是,解析或拒绝似乎都只是从挂起队列中清除请求。如何实际发送数据或单个$http以继续请求

这里有一个关于我要完成的事情的例子


AngularJS中有一个bug。解析(或拒绝)缓存的承诺返回时,$http不会以任何方式处理数据

相关错误

正如评论中所说,缓存项可能是一个未解决的承诺,即一个尚未完成的调用。缓存的承诺是return,因此它确实与承诺一起工作。我真的不确定你想要实现什么?这个缓存是一个http响应缓存,用于存储字符串和json等可以通过网络返回的内容。承诺存在的唯一原因是表明调用正在执行。您找到解决方案了吗?是的,停止使用。:)根据“正确答案”,这是一个错误。不确定目前的状态是什么,在这个问题被问到后不久,我就没有使用Angular。
  if (cache) {
    cachedResp = cache.get(url);
    if (isDefined(cachedResp)) {
      if (isPromiseLike(cachedResp)) {
        // cached request has already been sent, but there is no response yet
        cachedResp.then(removePendingReq, removePendingReq);
        return cachedResp;
      } else {
        // serving from cache
        if (isArray(cachedResp)) {
          resolvePromise(cachedResp[1], cachedResp[0], shallowCopy(cachedResp[2]), cachedResp[3]);
        } else {
          resolvePromise(cachedResp, 200, {}, 'OK');
        }
      }
    } else {
      // put the promise for the non-transformed response into cache as a placeholder
      cache.put(url, promise);
    }
  }