java项目反应器:是否有类似Nosideeffect finally的方法(不是sideeffect方法doFinally)
举个例子:
Mono.create(callback -> {
try { callback.success(someLogic()); }
catch (Exception e) { callback.error(e); }
})
.doFinally((v) -> Mono.fromRunnable(() -> {
Thread.sleep(1000); // In reality, we have a blocking I/O code here and needs to be executed on a separate thread
}).block())
.block();
当我运行这段代码时,它会立即完成,而不会等待1000毫秒的延迟。这是因为doFinally
是一种副作用方法,因此它不会作为链的一部分执行。是否有一个类似finally的方法可以作为链的一部分执行
我目前的解决办法是
Mono.create(callback -> {
try { callback.success(someLogic()); }
catch (Exception e) { callback.error(e); }
})
.then(Mono.fromRunnable(() -> {
Thread.sleep(1000);
}))
.onErrorResume(e -> Mono.fromRunnable(() -> {
Thread.sleep(1000);
}))
.block();
如果没有这样的方法,还有更好的方法吗
共 (0) 个答案