我有一個地圖函數(shù),其定義如下: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. }); }問題是如果出現(xiàn)錯誤(即IOException),我們?nèi)匀恍枰祷匾恍┹敵?。也有可能沒有答案(但沒有發(fā)生錯誤)一種解決方案可能是,Optional::empty但我認(rèn)為這很麻煩。Mono::empty如果發(fā)生錯誤,我最好返回。原因是,Mono::empty在沒有任何進(jìn)一步處理的情況下被訂閱者消費。這是一個例子:Flux.just( Mono.just("123"), Mono.empty(), Mono.just("456") ).flatMap(s -> s) .subscribe(System.out::println);輸出將是:123456如何實現(xiàn)相同的行為?應(yīng)該是什么map樣子?編輯:重新考慮一下,也許我最好返回一些容器(如Optional)或一個Result可以為空的自定義容器( )。
1 回答

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