【发布时间】:2021-08-01 03:45:25
【问题描述】:
我有两种方法允许以异步方式访问底层存储
private Mono<String> read(String key) { }
private Mono<Boolean> delete(String key) { }
我想创建另一个异步方法,该方法将读取值并立即删除它并返回读取值。我能够以一种非常丑陋的方式管理它。
public Mono<String> readAndDelete(String key) {
Mono<String> read = read(key).cache();
return read.then(delete(key)).then(read);
}
但我确信必须存在更优雅和正确的方法。我怎样才能实现它?
除了Auktis提出的答案,delayUntil方法也可以达到类似的效果
public Mono<String> readAndDelete(String key) {
return read(key).delayUntil(value -> delete(key));
}
根据文档delayUnit 解析单声道,然后触发另一个指定为参数的单声道,最后返回第一个解析单声道的结果。
【问题讨论】:
-
您在寻找
doOnSuccess吗? -
doOnSuccess接受Consumer,因此可以对读取做出反应,但不允许安排delete方法调用。还是我错过了什么? -
你所说的“时间表”到底是什么意思?
标签: java reactive-programming project-reactor