手动抛出错误离子2

时间:2017-09-12 13:31:43

标签: javascript ionic-framework ionic2

我正在与网络服务进行通信,并且返回可能是负面或porisitvo,并且将落入调用的成功,但如果返回为负,我需要手动抛出异常

 .map(res => res.json())
  .subscribe(res => {
    let returno = JSON.parse(res.d);  
    if (returno.status == 'success') {
      this._loggedIn(returno);
    } else {
      throw returno;
    }
  }, err => {
    console.error('ERROR', err);
  });

2 个答案:

答案 0 :(得分:1)

只需将对象传递给throw,就可以在JS中抛出异常。在您的情况下throw err

答案 1 :(得分:0)

我希望您希望所有订阅者以同样的方式处理错误?因此,您可以在Observable级别处理错误,而不是订阅者级别。

因此,您可以执行以下操作:

public tryLogin(url: string): Observable<any> {
  return this.http.get(url)
    .map(res => res.json().d)
    .map(res => {
      if (res.status !== 'success') {
        Observable.throw(res);
      }

      return res;
    });
}

然后您可以按以下方式调用此代码:

this.tryLogin('mydata')
  .subscribe(
    data => this._loggedIn(data),
    err => console.log(err);
  )

这种方法的好处是,如果您不希望您的订阅者知道发生了什么,您可以对其进行抽象,并在next回调中对其进行身份验证,或者处理error回调失败的事件。