Angular $ http在404上调用成功

时间:2016-02-18 23:06:46

标签: javascript angularjs ajax promise angular-promise

我通过服务公开此功能:

scala> (array.zipWithIndex ++ array.zipWithIndex).foreach{
     |   case (x, i) => println(s"$i: $x")
     | }
0: a
1: b
2: c
0: a
1: b
2: c

scala> (array ++ array).zipWithIndex.foreach{
     |   case (x, i) => println(s"$i: $x")
     | }
0: a
1: b
2: c
3: a
4: b
5: c

如果通话成功,一切都很好 - 我收回了按预期结算的承诺。

如果我传入生成404的网址,我会:

  

TypeError:无法读取属性'数据'未定义的

就行:function getData(url) { return $http.get(url).then(function (response) { return response.data; }); }

我可以在Chrome的开发者工具中看到return response.data;返回404。

为什么Angular(v1.4.7,也尝试使用v1.5.0 )调用带有GET的successCallback会出错?

(我想做的是处理调用代码中的失败。)

编辑: @jcaron指出了我正确的方向。问题似乎是此配置行(由其他开发人员编写):

undefined

拦截器必须有设计缺陷:

$httpProvider.interceptors.push('ErrorInterceptor');

1 个答案:

答案 0 :(得分:6)

  

拦截器必须有设计缺陷

确实有。如果拒绝不是500状态,则返回undefined,这符合承诺。它应该是

…
responseError: function (err) {
    if (err.status === 500) {
        $window.location.href = '/error';
    }
    return $q.reject(err); // always pass on rejection
}