【问题标题】:How to set max count for repeat to getOrElse function in Option android如何在Option android中设置重复的最大计数到getOrElse函数
【发布时间】:2023-03-25 05:43:02
【问题描述】:

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

fun sendRequest(): Single<Option<BeResponse>

在sendRequest() 函数内部,我将其从Either&lt;ApiError, Data&gt; 转换为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。如何设置最大尝试次数?

【问题讨论】:

    标签: android kotlin rx-java


    【解决方案1】:

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

    看到这个

    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
           }
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-08-29
      • 2019-11-30
      • 1970-01-01
      • 2020-03-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-10-16
      相关资源
      最近更新 更多