簡體   English   中英

Spring WebFlux:合並 Mono 和 Flux / 將 Mono 放入 Flux?

[英]Spring WebFlux: Merge Mono and Flux / Put Mono into Flux?

我想知道是否可以將Mono的值作為值放入Flux中,就像您可以將任何對象附加到列表一樣。 我知道您可以使用一些方法,但它們都不能滿足我的確切目的。 到目前為止我嘗試了什么:

Flux<T> flux;
Mono<T> mono;
Flux.merge(flux, mono); // <- returns Flux<Object>

這聽起來還不錯,但請注意它不會像我需要的那樣返回Flux<T>而是返回Flux<Object> Flux.concat(flux, mono);相同 . 方法Flux.zip(flux, mono); 據我了解,一旦 Mono 完成,就會停止合並。

有人對此有解決方案嗎?

這就是我最終做的事情: 在此處輸入圖像描述

我有該方法返回所需類型的 Flux,在我的情況下是“ExtendedResourceModel”。 我創建了一個這種類型的 Mono,它由我注釋掉的另一種方法初始化,以使這個答案盡可能簡潔。 如果滿足某個條件,我還想使用來自不同來源的 Flux,因此我使用“Flux.concat()”將所有元素放入單個 Flux。 'concat' 方法的工作原理是訂閱第一個參數,讓它完成,訂閱第二個參數,依此類推。 如果不滿足我的條件,我只是再次使用“concat”,但這次只使用 Mono,它將 Mono 的元素放入新的 Flux 中。 這樣,兩種情況都具有相同的返回類型。

這是不可能的,如果您需要這樣做,您可以將 Flux 轉換為單聲道

Mono monoToFlux = flux.collectList();

單聲道;

Mono.zip (mono, monoToFlux).flatmap(tuple -> { ... 更多代碼 ... })

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM