如何在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<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。如何设置最大尝试次数?
【问题讨论】:
【参考方案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 DatePicker 中设置最小和最大日期?