亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

是否可以混合使用反應性代碼,即 Mono 和 Flux 對象,它們是反應性流以及

是否可以混合使用反應性代碼,即 Mono 和 Flux 對象,它們是反應性流以及

開滿天機 2023-04-19 15:43:48
我有兩個對象,每個對象都包含列表,我的整個 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 流。


查看完整回答
反對 回復 2023-04-19
  • 1 回答
  • 0 關注
  • 151 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號