android - kotlin 中的 flatMap()
问题描述
如果我Single
使用 Kotlin 中的示例进行调用Retrofit
,我想检查结果答案并继续处理 aSingle
或错误。例如
model.doRequest()
.flatMap { t: Response ->
if(!h.hasError) {
return@flatMap model.doAnotherRequest()
} else {
return@flatmap Single.error<Throwable>(Throwable("error))
}
}
如果我做另一个或任何其他事情flatMap()
,subscribe()
RxJava 将不知道我想继续由 给出的响应doAnowhtRequest()
,而是会返回Any!
。我如何获取第二个请求给出的数据?
在 Java 中,Single.error
不解释,因此 RxJava 将在下一次调用中继续给我响应。
解决方案
doAnotherRequest()
假设您想返回与问题相同的内容Single.error<Throwable>(Throwable("error))
。您正在访问要返回 a 的编译器Single<Throwable>
,但您想返回 a Single<whatever doAnotherRequest returns>
。
说你的 return ,然后你会想要 return ,这将doAnotherRequest
返回一个单一的,它将发出一个带有给定异常的错误。Single<Foo>
Single.error<Foo>(Throwable("error))
Kotlin 尝试推断您想要返回的类型,但是因为您返回的“最常见”类型是 2 种类型,所以Any
kotlin 只能推断出您想要返回的类型。
推荐阅读
- sql - sql中的OFFSET和FETCH NEXT:不能返回少于限制的记录数
- sql - 如何查阅具有重复参考值和不同状态的表格
- javascript - 记录不充分的 google 数据存储区 api 返回未定义的 transaction.get
- c - scanf 的第二个值没有改变
- html - 如何使用网站开放库将信息存储到数据库中
- reactjs - 使用表单中的选择值作为 API 参数来获取响应 - Reactjs
- yaml - 如何将地图添加到 ytt 中的地图数组中?
- openvpn - Pritunl 卡在“生成设置服务器 ssl 证书”
- python - Python:如何将可变长度前导零添加到二进制字符串?
- html - HTML5
标签,可以有属性吗?