如何抛出Observable错误

时间:2017-08-31 07:12:03

标签: angular rxjs observable

我在 Angular 4

中使用此方法
modifyStock(id: number, quantity: number) {
  const url = `/item/${id}/modifyStock`;
  const body = { quantity: quantity };

  return this.http.put(url, body);
}

我想控制是否有任何输入参数是null,如果它发生就不要调用http.put(),然后抛出必须在{{{{}>中捕获的错误1}} 调用此方法的方法。

我尝试了这个以及subscribe()之类的一些组合,但我无法让它发挥作用。

throw Observable.throw('Error')

2 个答案:

答案 0 :(得分:3)

您可以让观察者抛出错误:

this.data = new Observable(observer => {
      setTimeout(() => {
          observer.next(42);
      }, 1000);

      setTimeout(() => {
          observer.next(43);
      }, 2000);

      setTimeout(() => {
         observer.error('bla');
      }, 2500);

      setTimeout(() => {
          observer.complete();
      }, 3000);
  });

答案 1 :(得分:1)

Observable.throw应该有效。确保正确导入。

import { Observable } from "rxjs/Observable";
import 'rxjs/add/observable/throw';

你可以像在你的例子中那样使用它。

test() {
  this.modifyStock(1, null).subscribe(() => {
    console.log('success');
  }, 
  err => {
    console.log('error', err);
  })
}

modifyStock(id: number, quantity: number): Observable<any> {
  if (id == null || quantity == null) {
    return Observable.throw('Error');
  }

  const url = `/item/${id}/modifyStock`;
  const body = { quantity: quantity };

  return this.http.put(url, body);
}