[英]Flux - Cancelled and Terminated not mutually exclusive?
我正在尝试围绕 Flux 执行包装跟踪范围,并希望通过使用 doOnCancel 添加标签来特别处理“已取消”信号,而我使用 doOnTerminate 定期终止 Flux。
那时我注意到有些情况下 Flux 被视为已取消,即使它也终止了。 这是设计使然吗? 我的理解是,这些州将是相互排斥的。
Flux.just("a")
.doOnCancel(() -> System.out.println("cancelled"))
.doOnTerminate(() -> System.out.println("terminated"))
.blockFirst();
这打印:
取消
终止
有没有办法查明 Flux 是否被取消但没有终止?
这两个信号在 Reactive Streams 规范中确实不是相互排斥的:取消是异步的,并且可以在Publisher
调用取消Subscriber
的onComplete
或onError
方法时完成,因此这两个副作用都被调用的可能性。
取消的Subscription
甚至可以推送一些onNext
事件(从概念上讲,这样onNext
将在订阅被取消的那一刻“进行中”)。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.