2017-09-19 8 views
2

httpコールの方針は、現在次のようになっています。
10秒後に各要求をタイムアウトし、 5回。httpコールの各タイムアウトで特定の動作を監視する

this.httpClient.post(url, body) 
    .timeout(10000) 
    .retryWhen(error => { 
    return error.delay(500).take(5); 
    }) 
.subscribe(
    response => { 
    // stuff 
    }, 
    error => { 
    // stuff 
    } 

今私の問題は、私はすべてのタイムアウトが発生したときに何かをする必要があるだろうということである(例えばわずかな短い情報テキストを印刷:私の知る限りは多少出て、これを考え出し、動作しているようです、私を伝えることができるよう
'タイムアウト1'、 'タイムアウト2' ...)。

どうすればよいですか?

現在、rxjs 5.4.2では、角4.2.4(問題ありません)となっています。あなたは何ができるか

答えて

3

はあなたがdoを使用することができます副作用を実行できるようにしたいので、もしtimeoutオペレータがerror通知を発するdo operator

error.delay(500).do(() => {console.log('try')}).take(5); 
2

を追加することです。

this.httpClient.post(url, body) 
    .timeout(10000) 
    .do(null, error => console.log(error) /* ... or whatever */) 
    .retryWhen(error => { 
    return error.delay(500).take(5); 
    }) 
    ... 

はあなたのためにそれを使用するための正しい方法は、このようなものですので、doはそれぞれnexterrorcomplete通知のための3つの引数を取ることに注意してください

関連する問題