如何在 Option android 中设置重复 getOrElse 函数的最大次数

How to set max count for repeat to getOrElse function in Option android

我对 returns 错误请求的最大重复次数有疑问。在我的例子中,我需要向后端发送一个新请求,如果之前的请求正在下降,但最多 3 次。我正在使用选项来获取结果,即 returns 数据或错误:

fun sendRequest(): Single<Option<BeResponse>

sendRequest() 函数内部,我将其从 Either<ApiError, Data> 转换为 BeResponse

data class BeReponse(
   val error: ApiError? = null,
   val data: Data? = null
)

当我尝试获取数据时,如果前一个请求失败,我需要发送请求。所以我正在使用:

sendRequest().flatMap{ option -> 
    option.map {
        if (option.error != null) {
            Single.just(null.toOption())
         } else {
            Single.just(it)
         }
    }.getOrElse{ sendRequest() }
}

但如果我有错误,我会无休止地调用 sendRequest。我如何设置最大尝试次数?

创建临时变量,然后在程序循环时增加它..

看到这个

var temp = 0
sendRequest().flatMap{ option -> 
    option.map {
        if (option.error != null) {
            Single.just(null.toOption())
         } else {
            Single.just(it)
         }
    }.getOrElse{
        if (temp < 3){
          sendRequest()
          temp = temp+1
       } else{
          //do your code to take action
       }
}