2017-02-09 4 views
4

私は次のコードを書いています(この記事では簡略化されています) - 最初の呼び出しをonStart()とします。ポーリング時にAngular2でRXJS HTTPとの接続が失われるのを処理する方法

これは正常に動作します。私がインターネット接続を失うと、net::ERR_INTERNET_DISCONNECTEDエラー(期待どおり)が得られますしかしポーリングが停止します。

明らかに私はここで何かエラーを処理していないので、私は立ち往生しています。私はそれらのエラーをどのように処理するのか明確ではありません。 startPolling()に再度電話する必要がありますか?

再接続データが更新されるように、インターネット接続がなくてもポーリングを続行する必要があります。アドバイスをお願いしますか?

onStart() { 
    this.startPolling().subscribe(data => { 
     // do something with the data 
    }); 
} 

startPolling(): Observable<any> { 
    return Observable 
     .interval(10000) 
     .flatMap(() => this.getData()); 
} 

getData() { 
    var url = `http://someurl.com/api`; 
    return this.http.get(url) 
     .map(response => { 
      return response.json(); 
     }); 
} 

ありがとうございます。

答えて

5

this.http.get(url)のためにエラーが発生した場合は、error通知を送信したソースObservableの代わりに別のObservableを登録できるcatch()演算子を追加できます。

getData() { 
    var url = `http://someurl.com/api`; 
    return this.http.get(url) 
     .catch(err => Observable.empty()) 
     .map(response => { 
      return response.json(); 
     }); 
} 

これは単にエラーを無視して何も出力しません。

+0

ありがとうマーティン私はそれを行ってあげるよ。 –

+0

ありがとうございました。私は観察可能なものについて少し振り上げる必要があると思う.. –

関連する問題