当我意识到形成和等待价值改变时,如果我认为是我的服务中的错误.
这是代码:
constructor(private fb: FormBuilder, private bankService: BankService) {
this.page = 1;
this.filter = this.fb.group({
text: ['', []],
bankC: ['', []]
});
this.filter.valueChanges
// wait for a pause in typing of 200ms then emit the last value
.debounceTime(200)
// only accept values that don't repeat themselves
.distinctUntilChanged()
// map that to an observable HTTP request, using the TickerLoad
// service and switch to that
// observable. That means unsubscribing from any previous HTTP request
// (cancelling it), and subscribing to the newly returned on here.
.switchMap((val: any) => {
return bankService.getCountry(val.bankC)
})
.subscribe((res) => {
console.log(res);
},
(err) => {
console.log(err);
});
// send an empty array to tickers whenever clear emits by
// merging in a the stream of clear events mapped to an
// empty array.
}编辑
我发现了什么问题,是在http intreceptor里面:
intercept(observable: Observable<Response>): Observable<Response> {
return observable.catch((err, source) => {
if (err.status == 401) {
this._router.navigate(['']);
return Observable.throw(err);
//&& !_.endsWith(err.url, 'api/auth/login')
} else {
return Observable.throw(err);
}
});
}这一部分是:return Observable.throw(err);
如何返回错误而不刹车订阅。
发布于 2016-10-31 12:15:10
如果您想重新订阅可观察的源,请在 operator之前使用subscribe()
...
.switchMap((val: any) => {
return bankService.getCountry(val.bankC)
})
.retry(-1) // resubscribe forever
.subscribe((res) => {
console.log(res);
}, ...发布于 2022-03-19 01:52:52
我知道太晚了,但试着用-
return throwError(err);或者你也可以抛出一个可以观察到的恢复。
return of(null);或
return EMPTY;您还可以使用RxJs管道操作符链接多个catchError操作符,如下所示-
.pipe(
catchError((err) => throwError(err)),
catchError((err) => of([])
);一个抛出一个可观察的恢复错误,另一个抛出一个空可观测的恢复。通过这种方式,您可以向用户显示错误消息,并发送一个可观察到的可订阅的恢复。这永远不会打破锁链。
https://stackoverflow.com/questions/40341771
复制相似问题