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

Posted

技术标签:

【中文标题】如何在Option android中设置重复的最大计数到getOrElse函数【英文标题】:How to set max count for repeat to getOrElse function in Option android 【发布时间】:2021-07-17 01:22:45 【问题描述】:

我对返回错误的请求的最大重复次数有疑问。在我的情况下,我需要向后端发送一个新请求,如果以前下降,但最多 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。如何设置最大尝试次数?

【问题讨论】:

【参考方案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
       

【讨论】:

以上是关于如何在Option android中设置重复的最大计数到getOrElse函数的主要内容,如果未能解决你的问题,请参考以下文章

Android:如何在 android constraintLayout 中设置视图的最大宽度?

如何在android中设置带有包装内容的最大高度?

如何在 Android DatePicker 中设置最小和最大日期?

如何在Android中设置EditText的最大字符数?

如何在 android 的 datepicker 对话框中设置最大日期?

如何在 Android Studio 代码编辑器中设置最大行长?