我在Angular 4中有一个observable来观察输入,当检测到url时会调用一个启动xhr请求的服务。
Observable.fromEvent(this._elementRef.nativeElement, 'input')
.debounceTime(500)
.map((res: any) => { return res.target.value })
.distinctUntilChanged()
.map((res: string) => String(res.match(this.regExpUrl)))
.distinctUntilChanged()
.filter(res => res ? true : false)
.switchMap(this.serviceThatReturnAObservableOfAXHRRequest))
.subscribe(response => console.log(response),
err => console.log(err));
当xhr返回200时,输入的observable继续工作,我可以在输入中写入其他url,但是当返回错误时,输入的observable停止工作,如果我在输入中写了一些永远不会再通过观察者了。
知道为什么请求引发的错误并且在订阅中捕获的错误可能会破坏输入的可观察性,何时成功?
答案 0 :(得分:0)
这是正确的行为。您可以使用catch(() => Observable.of())
来忽略错误,或catch(err => Observable.of(err))
将其转换为next
项或retry()
以自动重新订阅源Observable。
由于您正在使用Angular http
服务,我认为每个非2XX
都会自动生成错误。
类似的问题: