J'essaie d'écrire un gestionnaire d'erreur générique pour mon site Web à l'aide de $http'
s intercepteurs mais ils ne semblent pas pouvoir faire ce que je veux faire.
J'ai placé des intercepteurs sur 'response'
et 'responseError'
mais ils ne sont jamais appelés lorsque le serveur est hors ligne/ne répond pas (net :: ERR_CONNECTION_REFUSED). Je comprends pourquoi cela se produit, il n'y a aucune réponse à l'interception.
J'aimerais savoir s'il existe un moyen générique de détecter ces erreurs, à part écouter le $httpPromise
's error
callback pour chaque requête.
Vous pouvez probablement vérifier l'état de ResponseError. Lorsqu'une API est hors ligne, elle vaut 0 (jusqu'à Angular 1.3.18) ou -1 (puisque Angular 1.3.19)):
angular.module("services.interceptor", arguments).config(function($httpProvider) {
$httpProvider.interceptors.Push(function($q) {
return {
responseError: function(rejection) {
if(rejection.status <= 0) {
window.location = "noresponse.html";
return;
}
return $q.reject(rejection);
}
};
});
});