RxJava BehaviorSubject#onError(Throwable) 等同于 Kotlin Flow

RxJava BehaviorSubject#onError(Throwable) equivalent in Kotlin Flow

我正在将项目中的一些 RxJava 代码转换为 Kotlin Flow。

我发现了一段代码,其中 BehaviorSubject#onError(Throwable) 被调用。

我没有找到任何方法来使用 Flow 对象。

// RxJava
val behaviorSubject = BehaviorSubject.create<Int>()
behaviorSubject.onError(RuntimeException())

// Kotlin Flow
val mutableSharedFlow = MutableSharedFlow<Int>()
mutableSharedFlow.???

有什么办法吗?

来自 docs:“SharedFlow 不能像 BroadcastChannel 那样关闭并且永远不能表示失败。如果需要,所有错误和完成信号都应明确具体化。”

所以您可能必须创建一个数据 class,其中包含用于值和异常的槽,然后使用 takeWhile 停止它。

(旁注:我正好有一个 BehaviorSubject for kotlin flow that does offer an error channel。)