Angularjs 角度500错误处理不';行不通

Angularjs 角度500错误处理不';行不通,angularjs,Angularjs,我有一个发出post请求并返回数据的服务 app.service('flagService', ['$http', function ($http) { this.getData = function (r, c) { return $http.post('http://localhost:8080/api/flag', { row: r, column: c }).then(function (data) { return data; }) } }]); 在控

我有一个发出post请求并返回数据的服务

app.service('flagService', ['$http', function ($http) {
this.getData = function (r, c) {
    return $http.post('http://localhost:8080/api/flag', { row: r, column: c }).then(function (data) {
        return data;
    })
}
}]);
在控制器的某个地方

flagService.getData(row, column).then(function () {
   console.log('it works')
})
但api也可以返回500个状态代码。在这种情况下,我在控制台中得到“可能的未处理拒绝…”。现在我想制作一个简单的
alert()
,当返回500个错误时,它将打开。我尝试了很多很多解决方案,包括第二个函数,
.catch()
.error()


但我还是不能犯错误。有解决办法吗?谢谢

您可以使用拦截器进行全局错误处理,只要请求被拒绝,就会调用responseError

.factory('myInterceptor', ['$q', '$location', '$injector', function ($q, $location, $injector) {
    return {
        response: function (response) {
            return response || $q.when(response);
        },
        responseError: function (rejection) {
            if (rejection.status === 500) {
                console.log('http 500 response')
            }
            return $q.reject(rejection);
        }
    }
}])
.config(['$httpProvider', function ($httpProvider) {
    $httpProvider.interceptors.push('myInterceptor');
}]);
.factory('myInterceptor', ['$q', '$location', '$injector', function ($q, $location, $injector) {
    return {
        response: function (response) {
            return response || $q.when(response);
        },
        responseError: function (rejection) {
            if (rejection.status === 500) {
                console.log('http 500 response')
            }
            return $q.reject(rejection);
        }
    }
}])
.config(['$httpProvider', function ($httpProvider) {
    $httpProvider.interceptors.push('myInterceptor');
}]);