Data may still be sent to meet previously signalled demand after calling cancel.
除非您正在创建低级运算符或Publisher
s,否则您不必担心这一点。
在哪种情况下,人们希望发布者继续发送,直到满足先前的信号需求?
主流 Reactive Streams 库都不会这样做,因为它们最终会停止发送项目。RxJava 2 和 Reactor 3 对此非常渴望,因此您很可能会在低级别异步发出的取消上有一个额外的项目。Akka Stream 可能发出更多信号(我上次检查时,它们混合了控制和项目信号,并且每个流的最大同步项目有一个配置设置,这可能导致在取消生效之前发出多个项目)。
另外,如果我不想在取消后发送任何新项目,我该怎么办?
取决于您实施的内容: aPublisher
或 a Subscriber
。
在Publisher
最渴望的方法是设置一个volatile boolean cancelled
场和检查,每次你在某种排放循环。
在 a 中Subscriber
,您可以在每个boolean done
字段中检查一个字段,onXXX
这样当您调用Subscription.cancel()
from 时onNext
,任何后续调用都将被忽略。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句