$cacheFactory を使用して $resource の上に非同期キャッシュを実装しようとしています。
$http ソースを調べてみると、キャッシュからのプロミスの返しがサポートされているようです。その後、キャッシュ データを使用して Promise を解決するか、それを拒否して $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 を送信してリクエストを続行するにはどうすればよいですか?
これは、私が達成しようとしていることについてのプランカーです。