为什么不推荐使用 Kotlin 通道上的流操作?

Nag*_*obi 3 kotlin kotlin-coroutines

如果试图在科特林使用任何的流操作的通道(mapfilter,等...),你会得到以下警告

注意:随着惰性异步流的引入,此 API 将在未来的更新中过时。见问题#254

我不确定我是否完全理解关于 issue #254的讨论。为什么这些操作会过时?

如果我是正确的知道问题是,无论是否有任何订阅者 ,这些流操作都会运行(因为频道很热,我不确定为什么这是一个问题......),方向是优化它们,以便它们仅在有订阅者时运行?

Dom*_*her 7

它们已被弃用,因为可以使用 Flow 运算符代替,并且他们不想重新定义通道的运算符。

编辑:您可以通过consumerAsFlow在 Channel 上使用 Flow 流操作符。

  • 是的,但是流和通道是不同的,流是冷的,在某些情况下我想对我的数据源进行建模,以便它有一个热流。所以我必须使用通道,以及已弃用的运算符 (3认同)
  • 通道可以使用“consumeAsFlow”作为流来使用。 (2认同)