使用promise调用AngularJS Resource错误回调

时间:2013-06-12 05:22:03

标签: angularjs resources

我一直在AngularJS中编写一个服务来保存一些数据,如果失败,则提醒用户。但是,在我创建资源并调用$ save:

之后
myResource.$save(function(success) {
  console.log(success);
}, function(error) {
  console.log(error);
});

我希望错误回调的参数是一个包含数据,状态,标题等的对象,但我得到的只是一个带有“then”函数的对象。我试着在JSFiddle中模拟它:

http://jsfiddle.net/RichardBender/KeS7r/1/

但是,此示例的工作方式与我原先预期的相同。我猛拉了这个JSFiddle示例,并把它放在我的项目中,它有我最初描述的相同问题,尽管据我所知,其他一切都是平等的。有谁知道为什么会这样?我的项目是用Yeoman / Bower / Grunt创建的,但我不明白为什么这些东西会在这里产生影响。

谢谢, 理查德

1 个答案:

答案 0 :(得分:3)

我解决了这个问题。错误发生在我的HTTP拦截器中,在错误代码中,我意外地返回$ q.reject(promise)而不是$ q.reject(响应)。

错误版本:

.factory('httpInterceptor', function($q) {
    return function(promise) {
        return promise.then(
            // On success, just forward the response along.
            function(response) {
                return response;
            },
            function(response) {
                // ... where I process the error
                return $q.reject(promise);
            }
        );
    };

固定版本:

.factory('httpInterceptor', function($q) {
    return function(promise) {
        return promise.then(
            // On success, just forward the response along.
            function(response) {
                return response;
            },
            function(response) {
                // ... where I process the error
                return $q.reject(response);
            }
        );
    };

-Richard