首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >doOnNext,doOnSuccess,doOnTerminate的执行顺序

doOnNext,doOnSuccess,doOnTerminate的执行顺序
EN

Stack Overflow用户
提问于 2022-08-30 14:27:38
回答 2查看 92关注 0票数 0

我的理解是,当一个Mono被订阅时,第一个信号是doOnNext,然后是doOnSuccess,然后是doOnTerminate,但是当我运行下面的代码时,这些方法的执行顺序是它们被链接的顺序,即doOnTerminate、doOnSuccess、doOnNext。如果我改变链式的顺序,顺序也会变。

代码语言:javascript
运行
复制
@Test
public void doOnsMono(){
    Mono<String> mono = Mono.just("ABC");
    mono.doOnSubscribe(s -> System.out.println("Just got subscribed") )
            .doOnTerminate(() -> System.out.println("Termination happens at the end"))
            .doOnSuccess(s -> System.out.println("I am successfull " + s))
            .doOnNext(s -> System.out.println("next next next" + s))
            .subscribe(s -> System.out.println("Subscribe" + s));

}

输出是如此的刚刚被订阅

终止发生在最后

我是成功的ABC

下一个nextABC

SubscribeABC

有谁能解释一下我的理解中的这种行为或差距。

EN

回答 2

Stack Overflow用户

发布于 2022-08-30 16:10:16

你的出版商:

代码语言:javascript
运行
复制
Mono.just("ABC")

发出一个元素(“ABC”)并完成。这三个方法都是同时触发的,没有执行顺序。检查this answer以了解每个方法的用途以及它们的不同之处。

票数 1
EN

Stack Overflow用户

发布于 2022-08-31 13:40:23

通过了@Ikatoforis共享的链接并运行了测试示例,下面是我推导出的(我在注释中发布的相同内容),哪个方法被调用取决于Mono中的内容以及它是否成功完成。至于调用它们的序列,这与mono本身的“生命周期”无关,而是基于链接序列触发的。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/73544130

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档