繁体   English   中英

Flux - Cancelled 和 Terminated 不是相互排斥的吗?

[英]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调用取消SubscriberonCompleteonError方法时完成,因此这两个副作用都被调用的可能性。

取消的Subscription甚至可以推送一些onNext事件(从概念上讲,这样onNext将在订阅被取消的那一刻“进行中”)。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM