如何从http服务获取错误

时间:2017-03-21 12:13:42

标签: javascript angularjs

如果服务无法加载网址,我正在尝试获取http错误。我创建了一个像这样的角度工厂:

  loadUsers: function () {
        return $http.get(urlService.url("/users"));
    },

在控制器中我尝试使用此工厂方法加载ruserlist:

  urlservice.loadUsers()
            .then(function(response) {
                 $log.info("user loaded");
            })
          .finally(data.bind(undefined, result));

此时我想处理http错误,但没有想到我必须使用错误函数,因为这是返回一个承诺。有人可以给我提示吗。

4 个答案:

答案 0 :(得分:1)

只需在您的承诺中添加.catch

urlservice.loadUsers()
            .then(function(response) {
                 $log.info("user loaded");
            })
          .catch(function(err) {
             console.log(err);
          })
          .finally(data.bind(undefined, result));

答案 1 :(得分:1)

.then方法添加第二个回调,如果出现错误将触发该回调。

来自角度doc的

https://docs.angularjs.org/api/ng/service/ $ HTTP

$http({
  method: 'GET',
  url: '/someUrl'
}).then(function successCallback(response) {
    // this callback will be called asynchronously
    // when the response is available
  }, function errorCallback(response) {
    // called asynchronously if an error occurs
    // or server returns response with an error status.
  });

答案 2 :(得分:0)

只需在此承诺中添加另一个函数

 urlservice.loadUsers()
            .then(function(response) {
                 $log.info("user loaded");
            },function(response) {
                 $log.info("error");
            })
          .finally(data.bind(undefined, result));

答案 3 :(得分:0)

 urlservice.loadUsers().then(successCallback, errorCallback)
     .finally(data.bind(undefined, result));

 var successCallback = function(response) {
     // handle data recieved
     $log.info("user loaded");
 };

 // create generic method for handling service errors
 var errorCallback = function(error) {
     // handle error here
     $log.info("error occurred");
 };