[英]How can I retry with a delay in RxJs without using the deprecated retryWhen?
[英]RxJs: is it possible to do delay with various time while using retryWhen
考慮以下 stream
this.service.doSomeRequest(params).pipe(
retryWhen(errors => errors.pipe(
delay(2000),
take(10)
)
)
我希望延遲時間因嘗試次數而異。 我試過以下
let getDelayTime = (index) => {
console.log('index', index);
return index * 2 * 1000;
}
let retryCount = 0;
this.service.doSomeRequest(params).pipe(
retryWhen(errors => errors.pipe(
delay(getDelayTime(retryCount)),
tap(() => retryCount++),
take(10)
)
)
仍然console.log('index', index)
只觸發一次。
那么如何使延遲時間取決於嘗試次數呢?
您可以使用delayWhen
將計算結果傳遞給timer
。
let getDelayTime = (index) => {
console.log('index', index);
return index * 2 * 1000;
}
let retryCount = 0;
this.service.doSomeRequest(params).pipe(
retryWhen(errors => errors.pipe(
delayWhen(() => timer(getDelayTime(retryCount))),
tap(() => retryCount++),
take(10)
))
)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.