我下面有两个测试函数,我希望返回相同的结果。第一个 (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)