2017-08-16 38 views

回答

0

這是正確的行爲,當completeerror通知發送觀察員取消訂閱和鏈處置。

您可以使用retry()運算符重新訂閱,但很難從此簡要說明中知道您的目標是什麼。

Observable.interval(10000) 
    .switchMap(() => this.http.get(url)) 
    .retry() 
    .subscribe(data => render(data)) 
0

takeUntil()可觀察。

RxJS實現了takeUntil運算符。您可以將它傳遞給Observable或Promise,它將監視觸發takeUntil的項目以停止鏡像源Observable。

更多信息click here

0

試試這個:

let dataX = Observable.interval(10000) 
.switchMap(() => this.http.get(url)); 

let caught = dataX.catch(
Observable.return({ 
error: 'There was an error in http request' 
})) 

caught.subscribe((data) => { return render(data) }, 
// Because we catch errors now, `error` will not be executed 
(error) => {console.log('error', error.message)} 
) 

,如果你願意,你可以把任何條件時,錯誤就這樣產生

if(!data[error]){ 
    render(data) 
} 

我希望它可以幫助你

0
Observable.interval(10000) 
    .switchMap(() => this.http.get(url) 
    .map(res => res.json()) 
    .catch (err => Observable.empty())) 
    .subscribe(data => render(data))