我有一個地圖函數,其定義如下:Mono<OUT> map(IN in)這是一個具體的例子:public Mono<Integer> map(String s) { return Mono.fromCallable(() -> { try { Thread.sleep(1_000); // simulate HTTP request return 1; } catch (Exception e) {} return -1; // need to return something. }); }問題是如果出現錯誤(即IOException),我們仍然需要返回一些輸出。也有可能沒有答案(但沒有發生錯誤)一種解決方案可能是,Optional::empty但我認為這很麻煩。Mono::empty如果發生錯誤,我最好返回。原因是,Mono::empty在沒有任何進一步處理的情況下被訂閱者消費。這是一個例子:Flux.just( Mono.just("123"), Mono.empty(), Mono.just("456") ).flatMap(s -> s) .subscribe(System.out::println);輸出將是:123456如何實現相同的行為?應該是什么map樣子?編輯:重新考慮一下,也許我最好返回一些容器(如Optional)或一個Result可以為空的自定義容器( )。
1 回答

紅糖糍粑
TA貢獻1815條經驗 獲得超6個贊
如果我理解正確,這就是你需要的:
return Mono.fromCallable(() -> { Thread.sleep(1_000); // simulate HTTP request return 1; }).onErrorResume(_ -> Mono.empty())
添加回答
舉報
0/150
提交
取消