我有兩個對象,每個對象都包含列表,我的整個 spring boot 項目都在使用項目反應器構造。我應該在 flux 或 mono map 操作中使用 java 流來遍歷和操作數據嗎?Flux.fromIterable(page.getPageFieldData()).subscribeOn(Schedulers.elastic()).map(pageField - > { clientDataMono.subscribeOn(Schedulers.elastic()).map(clientData - > { Flux.fromIterable(clientData.getPageFieldData()) .filter(clientPageField - > clientPageField.getId() == pageField.getId()) .subscribeOn(Schedulers.elastic()).map(field - > { dataUpdated = true; pageField.setData(field.getData()); return field; }).subscribe(); return clientData; }).subscribe(); if (dataUpdated) { pageField.setModifiedOn(Instant.now(Clock.systemUTC())); } return pageField; }).subscribe();或者我應該在 flux 的映射操作中使用 java 流。
1 回答

HUWWW
TA貢獻1874條經驗 獲得超12個贊
有時我覺得在 Java 8 出現之后,我們看到了同樣的“想要為所有事情使用流”的心態,但是有了 Reactor / RXJava。
我應該在 flux 或 mono map 操作中使用 java 流來遍歷和操作數據嗎?
簡短的回答是,如果您可以明智地使用 Java 流,并且 Reactor 在這種情況下沒有提供任何優勢,那么就沒有理由使用 Reactor。當用例需要時,Reactor / 反應式編程非常棒,但請記住,它是一個外部庫(未捆綁在核心 JRE 中),它比標準 Java 流更復雜,更難被普遍理解。
Reactor 當然要強大得多。如果您需要控制產生值的速度、背壓、詳細的發布者/訂閱者行為、多播、緩存、重試等,或者您可能在未來可行,那么它每次都會贏得勝利。
但是,如果您實際上只是過濾和映射現有的 Java 集合,就像您在該示例中那樣,反應堆無法提供任何改進,我認為沒有充分的理由不使用標準 Java 流。
添加回答
舉報
0/150
提交
取消