协同程序1.4.0-M1中刚刚引入了SharedFlow
,它旨在替换所有BroadcastChannel
实现(如design issue解密中所述)。
我有一个用例,其中我使用BroadcastChannel
表示传入的Web套接字框架,以便多个监听器可以“订阅”这些框架。
当我移到SharedFlow
时遇到的问题是,当我收到关闭帧或上游错误(我想通知所有订阅者该流已结束)时,我无法“结束”该流。
当我想有效地“关闭” SharedFlow
时,如何使所有订阅终止?
有没有办法分辨普通闭包与异常闭包之间的区别? (如 channel )
如果MutableSharedFlow
不允许将流的结尾传达给订阅者,那么如果BroadcastChannel
被弃用/删除,该怎么办?
最佳答案
SharedFlow
文档描述了您需要的内容:
基本上,您将需要引入一个特殊对象,您可以从共享流中发出该对象以指示该流已结束,在使用者端使用takeWhile
可以使它们发出,直到接收到该特殊对象为止。