Подтвердить что ты не робот

Angular.js $http intercept "net:: ERR_CONNECTION_REFUSED"

Я пытаюсь написать общий обработчик ошибок для моего сайта с использованием перехватчиков $http', но они, похоже, не могут делать то, что я хочу делать.

Я размещал перехватчики на 'response' и 'responseError', но они никогда не вызываются, когда сервер отключен/не отвечает (net:: ERR_CONNECTION_REFUSED). Я понимаю, почему это происходит, нет ответа на перехват.

Я хотел бы знать, существует ли общий способ обнаружения этих ошибок, кроме прослушивания обратного вызова $httpPromise error для каждого запроса.

4b9b3361

Ответ 1

Вероятно, вы можете проверить статус ResponseError. Когда API находится в автономном режиме, это 0 (до Angular 1.3.18) или -1 (начиная с 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);
            }
        };
    });
});