如何抛出 Observable 错误

J.J*_*.J. 4 observable rxjs angular

我在Angular 4中有这个方法:

modifyStock(id: number, quantity: number) {
  const url = `/item/${id}/modifyStock`;
  const body = { quantity: quantity };

  return this.http.put(url, body);
}
Run Code Online (Sandbox Code Playgroud)

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

我尝试过这个和一些组合throw Observable.throw('Error'),但我无法让它工作。

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

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

  return this.http.put(url, body);
}
Run Code Online (Sandbox Code Playgroud)

Car*_*ten 5

你可以让你的观察者抛出一个错误:

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

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

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

      setTimeout(() => {
          observer.complete();
      }, 3000);
  });
Run Code Online (Sandbox Code Playgroud)