[英]onMapReady is not called even though the map display without any error
[英]then() is called even though error is occured
以下代碼讓我感到困惑
doSomething()
.then(doSomethingElse())
.onErrorResume(throwable -> {
System.out.println("Error occurred");
return Mono.empty();
})
private Mono<Void> doSomething() {
System.out.println("Error thrown");
return Mono.error(new RuntimeException());
}
private Mono<Void> doSomethingElse() {
System.out.println("doSomethingElse");
return Mono.empty();
}
輸出:
Error thrown
doSomethingElse
Error occurred
為什么 then() 在返回錯誤時被調用,不應該被跳過嗎? 我期望以下輸出:
Error thrown
Error occurred
實現預期行為的正確方法是什么? 換句話說,只有當 doSomeError 沒有產生任何錯誤時才應該調用 then()。
由於 doSomethingElse 在流本身的創建過程中被調用,您應該按如下方式更改函數以獲得預期結果;
private Mono<Void> doSomethingElse() {
return Mono.fromSupplier(() -> {
System.out.println("doSomethingElse");
return null;
});
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.