小编Jam*_*ald的帖子

有人可以解释 Reactor Mono 流中 .then() 方法的注意事项吗?

我下面有两个测试函数,我希望返回相同的结果。第一个 (monoTest3) 在 '.then()' 方法中使用 lambda 表达式。第二个没有。

为什么我会得到我所做的结果?

使用 ReactiveX 和 lambda 表达式时有哪些注意事项?

在下面的代码中,monoTest3 产生

monoVoid called
Success
----
monoVoid2 called
Success
Run Code Online (Sandbox Code Playgroud)

和 monoTest4 产生(所需的结果):

monoVoid called
monoVoid2 called
Success
----
monoVoid2 called
monoVoid called
Success
Run Code Online (Sandbox Code Playgroud)

最后是代码。

private static Mono<Void> monoVoid() {
    System.out.println("monoVoid called");
    return Mono.empty();
}

private static Mono<Void> monoVoid2() {
    System.out.println("monoVoid2 called");
    return Mono.just("Hello").then();
}

@Test
public void monoTest3() throws Exception {
    monoVoid()
            .then( v -> monoVoid2())
            .doOnSuccess(v -> System.out.println("Success"))
            .block();

    System.out.println("----");

    monoVoid2()
            .then( v -> monoVoid())
            .doOnSuccess(v …
Run Code Online (Sandbox Code Playgroud)

lambda spring reactive-programming java-8 project-reactor

0
推荐指数
1
解决办法
2290
查看次数