簡體   English   中英

如何拋出Observable錯誤

[英]How to throw an Observable error

我在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()然后拋出必須在調用此參數subscribe()方法中http.put() 的錯誤

我嘗試了這個和一些組合,如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);
}

您可以讓觀察者拋出錯誤:

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

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

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

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

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);
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM