如何正确且顺序地链接响应式调用
How to chain reactive calls correctly and sequentially
我正在尝试按以下顺序拨打电话:
保存对象
仅当第一步完成后才发布对象创建事件
Return 一个 Flux 列表
我目前拥有的是:
return dbSaveObject(object) //this returns Mono of created object
.doOnSuccess(s -> hermes.publishEvent(CREATE)) //publishEvent() here returns Mono<Void>
.thenMany(Flux.just(object))
这是否会按要求工作和发布事件,或者我应该使用 zipWhen() 而不是 doOnSuccess()?
doOn...
是 so-called side-effect 运算符,不应用于构建反应流。
万一 publishEvent
returns Mono<Void>
你可以使用下面的
return dbSaveObject(object)
.flatMap(savedObject ->
hermes.publishEvent(CREATE)
.thenReturn(savedObject)
);
我正在尝试按以下顺序拨打电话:
保存对象
仅当第一步完成后才发布对象创建事件
Return 一个 Flux 列表 我目前拥有的是:
return dbSaveObject(object) //this returns Mono of created object .doOnSuccess(s -> hermes.publishEvent(CREATE)) //publishEvent() here returns Mono<Void> .thenMany(Flux.just(object))
这是否会按要求工作和发布事件,或者我应该使用 zipWhen() 而不是 doOnSuccess()?
doOn...
是 so-called side-effect 运算符,不应用于构建反应流。
万一 publishEvent
returns Mono<Void>
你可以使用下面的
return dbSaveObject(object)
.flatMap(savedObject ->
hermes.publishEvent(CREATE)
.thenReturn(savedObject)
);