只有Kotlin协程的数据流?

只有Kotlin协程的数据流?,kotlin,rx-java2,kotlinx.coroutines,Kotlin,Rx Java2,Kotlinx.coroutines,有了RxJava,我已经习惯于我的存储库返回可观察的数据,只要有潜在的变化,这些数据就会自动更新。我通过在我的存储库中设置一个主题来实现这一点,该主题会得到相关更改信息的通知,并且像getAll() 作为一个示例,以这个类似于psuedo的代码片段为例: fun getAll(): Observable<List<Model> { subject .filter { isChangeRelevant(it) } .startWith(in

有了RxJava,我已经习惯于我的存储库返回可观察的数据,只要有潜在的变化,这些数据就会自动更新。我通过在我的存储库中设置一个主题来实现这一点,该主题会得到相关更改信息的通知,并且像
getAll()

作为一个示例,以这个类似于psuedo的代码片段为例:

fun getAll(): Observable<List<Model> {
    subject
        .filter { isChangeRelevant(it) }
        .startWith(initialChangeEvent)
        .map { queryAll() }
}

fun getAll():可观察您可以使用Kotlin协程
Channel
s

如果您只希望您的值像流一样发出(因此您可以对每个流发出
),您可以使用
product
创建它们(返回
ReceiveChannel
):

您可以使用
broadCastChannel.offer(value)
向频道发送值

要从通道接收值,可以使用简单的for each循环:

for (i in broadCastChannel.openSubscription()) {
       //your values
}

请参阅。您的示例对于任何streams实现来说都是一件简单的事情,包括基本Java流、Java反应流或协同例程。因此,它没有举例说明合并可观察链、发散链、反馈链或跨线程通信,这些都是RxJava世界的面包和黄油。
val broadCastChannel = ConflatedBroadcastChannel<Int>()
for (i in broadCastChannel.openSubscription()) {
       //your values
}