fun <T> RealmList<T>.toFlow(): Flow<RealmList<T>>
返回监控此 RealmList 更改的流。 订阅时,它将发出当前的 RealmResults。 在 RealmList 更新时,将不断发出 RealmList 更新 — 永远不会调用onCompletion
。
从 Realm 流发出的项目被冻结 - 请参阅RealmList.freeze 。 这意味着它们是不可变的,可以从任何线程读取。
Realm 流始终从持有活动 RealmList 的线程中发出项目。 这意味着,如果需要进行进一步处理,建议在计算调度程序上收集值:
list.toFlow()
.map { list -> doExpensiveWork(list) }
.flowOn(Dispatchers.IO)
.onEach { flowList ->
// ...
}.launchIn(Dispatchers.Main)
如果您希望toFlow()
停止发出项目,您可以通过调用kotlinx.coroutines.flow.first来指示流程仅发出第一项:
val foo = list.toFlow()
.flowOn(context)
.first()
返回
可以调用onEach
或collect
的Kotlin Flow 。