2017-09-28 30 views
1

我在Angular 4中有一個可觀察的事件,它觀察輸入,並在檢測到URL時調用啓動xhr請求的服務。Angular 4.在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。

任何想法爲什麼在請求中拋出的錯誤和在訂閱中捕獲的錯誤可能會破壞輸入的可觀察性以及何時成功否?

回答

0

這是正確的行爲。您可以使用例如catch(() => Observable.of())忽略該錯誤或catch(err => Observable.of(err))將其變爲next項或retry()以自動重新訂閱源Observable。

由於您使用Angular的http服務,我認爲每個非2XX都會自動出現錯誤。

類似的問題:

+0

我用一個catch來處理錯誤,重試,重新suscribe和我有期望的行爲。謝謝。 –