Angular 订阅处理错误

Angular subscribe with processing error

现在我正在尝试 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...
      }
    );
}

但是我已经使用了很多没有 "error => ..." 的 test() 函数,如下所示

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 'error' 的好方法,只需在 sendGet() 函数中进行一次更正,但我不知道。

请让我知道我该怎么做?

试试这个:

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

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

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

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