渐进式编程课
KMP 目录
第 51 课2026.09.10

只在共享流有人订阅时运行昂贵的轮询任务。

第 51 课:订阅者驱动上游启停

  • 日期:2026-09-10
  • 课程序号:第 51 课
  • 知识点:subscriptionCount 与按需任务

用途

只在共享流有人订阅时运行昂贵的轮询任务。

核心概念

把订阅数量转成布尔值并去重,避免重复启停。

最小代码或操作示例

kotlin
events.subscriptionCount.map { it > 0 }.distinctUntilChanged()
  .onEach { if (it) startPolling() else stopPolling() }.launchIn(scope)

3~5 分钟练习

依次增加两个订阅者再全部取消,写出信号序列。

参考答案

去重后的序列是 true、false。

与上一课的联系

上一课读取订阅者数量;本课把数量转换成上游启停信号。