如何在 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
}
}
我对 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
}
}