【问题标题】:Spring Reactor - Wait until a mono is finished then do next MonoSpring Reactor - 等到一个单声道完成然后再做下一个单声道
【发布时间】:2018-03-12 10:43:27
【问题描述】:

假设我有一个返回 Mono 的 repository.save(..) 方法。

还可以说我有一个返回 Mono 的 repository.findByEmail(..)。

问题:

我希望第一个 Mono 在完成第二个 Mono 之后完成。

repository.save(..).then(repository.findByEmail(..))

但是,这里的第二个 Mono 总是先执行? 我的印象是.then(..) finishes and then plays another Mono

源码说:
Let this {@link Mono} complete then play another Mono.

我的问题有什么解决方案?

【问题讨论】:

    标签: project-reactor spring-webflux


    【解决方案1】:

    是什么让您认为该运算符的行为与预期不符?

    以下示例显示了它的作用:

    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 操作员并分享您问题中的日志。

    【讨论】:

    • 嗨,布莱恩。感谢您的努力和回复。我已经发现了错误。它在我身边。你是完全正确的。操作员的行为符合预期。
    • 很高兴您发现了问题 - 添加多个 log 运算符在那个时候很有用!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-11-17
    • 2022-01-16
    • 2020-04-14
    • 2021-07-05
    相关资源
    最近更新 更多