如果由于网络异常而导致我的单个错误,则返回Single.just(false)
如果我的单次错误是由于其他原因,请返回Single.error
如果我的单身成功,则返回原始的Single值。
这应该很容易
getStudent(studentId)
.onErrorResumeNext { if (it is NetworkException) return @onErrorResumeNext Single.just(true)
return Single.error(it) }
类型推断失败。预期的类型不匹配SingleSource已找到Single
答案 0 :(得分:0)
您的Single需要返回与源相同的类型(我假设getStudent()
不返回布尔值)。如果要表示“成功”和“错误”状态,则Kotlin专门为此提供了Result
类。
例如
getStudent()
.map { student ->
// Your logic here may look different
Result.success(student)
}
.onErrorResumeNext { error ->
if (error is NetworkException){
Single.just(Result.failure(error))
} else {
Single.error(error)
}
}
这将捕获网络错误并将异常包装在Result
中,所有其他异常将传播到下游。然后,您可以在subscribe
方法中选择如何处理错误。
但是,根据您的用例,您可能还希望使用Maybe
或retry()
运算符。