Jaa*_*aap 1 caching promise angularjs
在角度$http.get(url, {cache:true})将很好地缓存服务器响应.但是当对服务器的GET请求失败时,缓存会做什么?这可能是临时连接问题或服务器响应(如超时).
假设我处理错误并显示重试按钮,后续调用是否会$http.get(url, {cache:true})重试服务器,还是会从缓存中给出失败的承诺?
如果对同一GET URL发出多个请求,则缓存将导致只有一个请求.引用文档:
如果对应使用相同缓存缓存的同一URL存在多个GET请求,但尚未填充缓存,则只会向服务器发出一个请求,并使用第一个请求的响应来完成剩余的请求.
但是,如果状态代码不成功,则返回该请求时,它将不会被缓存(它将从缓存中删除).
我们可以在源代码中看到这个:
/**
* Callback registered to $httpBackend():
* - caches the response if desired
* - resolves the raw $http promise
* - calls $apply
*/
function done(status, response, headersString, statusText) {
if (cache) {
if (isSuccess(status)) {
cache.put(url, [status, response, parseHeaders(headersString), statusText]);
} else {
// remove promise from the cache
cache.remove(url);
}
}
Run Code Online (Sandbox Code Playgroud)
因此,简而言之 - Angular不会缓存"失败"请求 - 即:具有非成功状态代码的请求.
| 归档时间: |
|
| 查看次数: |
464 次 |
| 最近记录: |