假设我有一个返回Mono的repository.save(..)方法。
还可以说我有一个repository.findByEmail(..),它返回一个Mono。
问题:
我希望第一个Mono完成第二个Mono之后完成。
repository.save(..).then(repository.findByEmail(..))
然而,第二个Mono总是首先被执行?
我的印象是.then(..) finishes and then plays another Mono
源代码说:
Let this {@link Mono} complete then play another Mono.
我的问题的解决方案是什么?
答案 0 :(得分:4)
是什么让您认为此运算符的行为不符合预期?
以下示例显示了它:
Mono.just("first").log()
.then(Mono.just("second")).log()
.subscribe();
日志:
[main] INFO reactor.Mono.IgnoreThen.2 - | onSubscribe([Fuseable] MonoIgnoreThen.ThenIgnoreMain)
[main] INFO reactor.Mono.IgnoreThen.2 - | request(unbounded)
[main] INFO reactor.Mono.Just.1 - | onSubscribe([Synchronous Fuseable] Operators.ScalarSubscription)
[main] INFO reactor.Mono.Just.1 - | request(unbounded)
[main] INFO reactor.Mono.Just.1 - | onNext(first)
[main] INFO reactor.Mono.Just.1 - | onComplete()
[main] INFO reactor.Mono.IgnoreThen.2 - | onNext(second)
[main] INFO reactor.Mono.IgnoreThen.2 - | onComplete()
请添加log
运营商并在您的问题中分享日志。