[英]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.