簡體   English   中英

RxJs:是否可以在使用重試時延遲不同的時間?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM