我正在尝试使用 $cacheFactory 在 $resource 之上实现异步缓存。
在 $http 源中四处寻找它似乎支持从缓存返回承诺。我会假设在那之后我可以简单地用缓存数据解决承诺或拒绝它并让 $http 做它的事情,然后将数据放回缓存中。问题是..我只是不工作。$http 真的支持承诺吗?
https://github.com/angular/angular.js/blob/master/src/ng/http.js#L895
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);
}
}
这是 $http 处理缓存,你可以看到它确实检查了一个承诺是否正在返回(第 898 行)。但似乎解决或拒绝都只是从待处理队列中清除请求。我如何实际发送数据或单个 $http 以继续请求?
这是关于我要完成的工作的 Plunker。