Angular 如何抛出可观察到的错误
我在《角度4》中有这个方法:Angular 如何抛出可观察到的错误,angular,rxjs,observable,Angular,Rxjs,Observable,我在《角度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()方法中捕获的
modifyStock(id: number, quantity: number) {
const url = `/item/${id}/modifyStock`;
const body = { quantity: quantity };
return this.http.put(url, body);
}
我想控制是否有任何输入参数为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);
}
您可以让观察者抛出错误:
this.data = new Observable(observer => {
setTimeout(() => {
observer.next(42);
}, 1000);
setTimeout(() => {
observer.next(43);
}, 2000);
setTimeout(() => {
observer.error('bla');
}, 2500);
setTimeout(() => {
observer.complete();
}, 3000);
});
可观察。抛出
应该有效。请确保正确导入它
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);
}
test(){
this.modifyStock(1,null).subscribe(()=>{
console.log('success');
},
错误=>{
console.log('error',err);
})
}
修改库存(id:编号,数量:编号):可观察{
如果(id==null | |数量==null){
返回可观察的。抛出('Error');
}
常量url=`/item/${id}/modifyStock`;
const body={quantity:quantity};
返回this.http.put(url,body);
}
TS不停下来给我这个错误:应该是0个参数,但是得到了1个。
即使我这样写订阅:this.modifyStock(1,null).subscribe(()=>{})
@J.J.Bocanegra在这种情况下,您应该明确地将返回类型声明为:Observable
。我已经更新了我的答案。throw被弃用了吗?@torazaburo Typescript对此表示不满。请提供TS错误。@torazaburo应为0个参数,但得到1个。
。我用this.myService.modifyStock(id,1.subscribe(()=>{})调用它代码>(也给出错误的简化示例)