android - 在Android响应式(Reactive)编程中,如何在应用过滤器后拆分流对象数据?

标签 android kotlin reactive-programming

拥有下一个数据模型:

data class Response(
        private val success: Boolean, 
        private val error: Error, 
        private val data: Data
) 

如果 success == false 我想得到 Error 对象,如果 success == true 我想得到 Data 对象在我的 Observable 流中。

我尝试了以下方法:

Observable.just(Response(true, Error(), Data()))
            .filter { response -> response.success }
            .switchIfEmpty {  } //Wanted response.error here
            .subscribe { response->  } //Wanted response.data here instead of full response.

有人知道如何实现吗?

最佳答案

在这种情况下你应该使用密封类

sealed class Response {
    data class Success(val data: Data) : Response()
    data class Error(val error: Error) : Response()
}

并进入您的 rx observable:

   ... //observableChain
   .subscribe { result: Response -> 
        when (result) {
            is Success -> handleSuccess(result.data)
            is Error -> handleError(result.error)
        }
   } 

关于android - 在Android响应式(Reactive)编程中,如何在应用过滤器后拆分流对象数据?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47572841/

相关文章:

Java 与 Kotlin 接口(interface)声明

android - 如何将pdf保存在范围存储中?

java - 订阅者如何通过 react 性拉背压来控制发布者?

android - com.android.ddmlib.InstallException : Failed to install all

android - 关于 C++ 中的函数名

android - 无法创建 AndroidViewModel 的实例

swift - MVVM RxSwift 将数据从主视图发送到详细 View Controller 的方法?

android - 如何在 Alertdialog 上有文本和可点击的 URL 链接?

android - 访问网络可用性状态android

reactive-programming - The Reactive Manifesto 中的事件驱动架构和消息驱动架构到底有什么区别?