Angular订阅处理错误

时间:2017-07-11 18:16:11

标签: angular http dictionary subscribe

现在我正在尝试Angular2 Http进程。

我知道如下功能:

sendGet(url) {
  return this._http.get(url)
    .map(res => res.json());
}

test(url) {
  this.sendGet(url)
    .subscribe(
      data => {
        processing data...
      },
      error => {
        processing error...
      },
      () => {
        other...
      }
    );
}

但我使用了许多test()函数而没有" error => ..."如下

sendGet(url) {
  return this._http.get(url)
    .map(res => res.json());
}

test(url) {
  this.sendGet(url)
    .subscribe(
      data => {
        processing data...
      }
    );
}

现在我必须处理所有http get进程的错误。

我认为添加' error => ...'进入每个test()函数都不是好方法。

我希望有一个很好的方法来处理所有的http'错误'只需在sendGet()函数中进行一次修正,但我不知道。

请告诉我该怎么办?

2 个答案:

答案 0 :(得分:1)

试试这个:

sendGet(url) {
  return this._http.get(url)
    .map(res => res.json())
    .catch( //error handling );
}

有了这个,如果有错误,它将自动停止执行,而不是去测试方法

答案 1 :(得分:0)

您可以为angular2 http服务编写包装器服务。包装器服务可以使用公共代码处理所有http请求的错误。在向服务器发出任何http请求之前,此包装器服务还可用于添加常见请求标头(如身份验证标头)。 您的完整应用程序应使用包装器服务与服务器通信。

另一种选择是使用http拦截器来处理错误响应。