次のサンプルがあります。
const result = http.get('http://google.com')
.switchMap(() => 'http://example.com')
// This retry should retry only example.com
.retryWhen(error =>
(error instanceof Response && error.status == 429) ?
Observable.timeout(5000) : Observable.throw(error))
// This retry should retry google.com
.retryWhen(error => Observable.timeout(5000))
彼の直系の親のみを再試行する retryWhen が必要です。そして、グローバル エラーの場合は、シーケンス全体を再試行します。RxJS 5 で簡単な方法はありますか?
UPD: これらは単なる例です。実際の状況はもっと複雑で、これについてのアイデアが必要です。
あなたはちょうどretryWhen
内部に置く必要がありますswitchMap
:
const inner = http.get('http://example.com')
// This retry should retry only example.com
.retryWhen(error =>
(error instanceof Response && error.status == 429) ?
Observable.timer(5000) : Observable.throw(error))
const outer = http.get('http://google.com')
.switchMap(() => inner)
// This retry should retry google.com
.retryWhen(error => Observable.timeout(5000))
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加