Вручную скинуть ошибку ionic 2

1

Я общаюсь с webservice, и возврат может быть отрицательным или 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);
  });
  • 0
    Дубликат stackoverflow.com/questions/40511948/…
  • 0
    это тоже не работает
Показать ещё 1 комментарий
Теги:
ionic-framework
ionic2

2 ответа

1

Вы можете создавать исключения в JS, просто передавая объекты для throw. Поэтому throw err в своем случае.

  • 0
    не работать так! Мне нужно нажать на эту строку console.error ('ERROR', err);
0

Я ожидаю, что вы захотите, чтобы все ваши подписчики обрабатывали ошибку таким же образом? Поэтому вы можете обрабатывать ошибку на уровне Observable, а не на уровне Subscriber.

Таким образом, вы можете сделать что-то вроде следующего:

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 вызове error.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню