2、启用检测 Flow 流的取消代码示例
一、调用 FlowCollector#emit 发射元素时自动执行 Flow 流的取消检测
----
在 Flow 流构建器 中 , 每次 调用 FlowCollector...#emit 发射元素时 ,
都会执行一个 ensureActive 检测 , 检测当前的流是否取消 ,
因此 , 在 flow 流构建器 中 , 循环执行的 FlowCollector#emit 发射操作..., 是可以取消的 ;
在 Flow#collect 代码块中 , 执行 Job#cancel 函数 , 即可 取消该流收集操作所在的协程 , 进而取消了流 ;
/**
* 用一个可选的cancel...if (it == 2) {
// 收集到元素 2 时, 取消流
// 在流中 emit...之外 ,
还有很多其它的 流操作 , 这些操作不会 自动执行 ensureActive 检测 ,
因此这里需要我们 手动 进行 流取消检测 ;
调用 Flow#cancellable() 函数 , 可以手动设置流取消检测