Anguleux.js $ HTTP intercept " net:: ERR connexion refusée"

J'essaie d'écrire un gestionnaire d'erreur générique pour mon site Web en utilisant les intercepteurs de $http', mais ils ne semblent pas être capables de 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 pas de réponse à intercepter.

J'aimerais savoir s'il existe un moyen générique d'attraper ces erreurs, autre que d'écouter le rappel error de $httpPromise pour chaque demande.

38
demandé sur SBSTP 2014-05-28 18:48:30

1 réponses

Vous pouvez probablement vérifier l'état de L'erreur ResponseError. Quand une API est hors ligne qui est 0 (Jusqu'à angular 1.3.18) ou -1 (depuis 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);
            }
        };
    });
});
64
répondu XGreen 2015-12-22 14:10:10