Reactor 3 參考文件 如何選擇操作符

2022-07-16 04:18:15 字數 3350 閱讀 7637

如果乙個操作符是專屬於fluxmono的,那麼會給它註明字首。

公共的操作符沒有字首。如果乙個具體的用例涉及多個操作符的組合,這裡以方法呼叫的方式展現,

會以乙個點(.)開頭,並將引數置於圓括號內,比如:.methodcall(parameter)

原文出處:

參考:

1)建立乙個新序列,它...

發出乙個t,且還是由just方法返回

發出許多t,這些元素我可以明確列舉出來:flux#just(t...)

基於迭代資料結構:

基於乙個引數值給出的源:

直接完成:empty

立即生成錯誤:error

什麼都不做:never

訂閱時才決定:defer

依賴乙個可**的資源:using

可程式設計地生成事件(可以使用狀態):

2)對序列進行轉化

我想新增一些資料元素到乙個現有的序列:

我想將flux轉化為集合(一下都是針對flux的)

我想合併 publishers...

只取各個序列的第乙個元素:flux#firstmono#firstmono.or

(othermono).or(thirdmono),`flux.or(otherflux).or(thirdflux)

由乙個序列觸發(類似於flatmap,不過「喜新厭舊」):switchmap

由每個新序列開始時觸發(也是「喜新厭舊」風格):switchonnext

我想重複乙個序列:repeat

我有乙個空序列,但是...

我有乙個 mono 但我想延遲完成...

我想基於乙個遞迴的生成序列的規則擴充套件每乙個元素,然後合併為乙個序列發出:

3)「窺視」(唯讀)序列

所有型別的訊號(signal):flux#dooneach

所有結束的情況(完成complete、錯誤error、取消cancel):dofinally

記錄日誌:log

我想知道所有的事件:

轉化為一行日誌:log

4)過濾序列

我只想要一部分序列:

從序列的最後乙個元素倒數:flux#takelast

直到滿足某個條件(包含):flux#takeuntil(基於判斷條件),flux#takeuntilother(基於對 publisher 的比較)

直到滿足某個條件(不包含):flux#takewhile

最多隻取 1 個元素:

給定序號:flux#elementat

最後乙個:.takelast(1)

跳過一些元素:

從序列的第乙個元素開始跳過:flux#skip(long)

跳過最後的 n 個元素:flux#skiplast

直到滿足某個條件(包含):flux#skipuntil(基於判斷條件),flux#skipuntilother(基於對 publisher 的比較)

直到滿足某個條件(不包含):flux#skipwhile

取樣:給定取樣週期:flux#sample(duration)

基於另乙個 publisher:flux#sample(publisher)

基於 publisher「超時」:flux#sampletimeout(每乙個元素會觸發乙個 publisher,如果這個 publisher 不被下乙個元素觸發的 publisher 覆蓋就發出這個元素)

我只想要乙個元素(如果多於乙個就返回錯誤)...

5)錯誤處理

我想要類似 try/catch 的表達方式:

我想從錯誤中恢復...

我想處理回壓錯誤(向上游發出「max」的 request,如果下游的 request 比較少,則應用策略)...

6) 基於時間的操作

如果元素間延遲過長則中止序列:timeout

以固定的週期發出元素:flux#interval

在乙個給定的延遲後發出0:staticmono.delay.

我想引入延遲:

7)拆分flux

我想將乙個flux的元素拆分到集合...

以時間為界:buffer(duration)

以個數或時間為界:buffertimeout(int, duration)

基於對元素的判斷條件:bufferuntil(predicate)

通過另乙個 publisher 的每乙個 onnext 訊號來拆分序列:buffer(publisher)bufferwhen

拆分到指定型別的 "collection":buffer(int, supplier)

我想將flux中具有共同特徵的元素分組到子 flux:groupby(function)(注意返回值是flux>,每乙個groupedflux具有相同的 key 值k,可以通過key()方法獲取)。

8)回到同步的世界

我有乙個mono,我想:

reactor 3 程式設計筆記二

參考資料 1 reactor 核心類 1.1 publisher public inte ce publisher publisher 代表訊息的傳送方 subscribe 傳入乙個subscriber,建立乙個生產和消費的連線,即subscription publisher可以有多個subscri...

看文件學爬蟲 3 CSS選擇器

什麼是css選擇器 一種快速定位元素的方法 css選擇器的基本用法 用法示例 說明 解釋 選擇所有元素 class.intro 解釋 選擇所有class intro 的元素 id firstname 解釋 選擇所有id firstname 的元素 elementp 解釋 選擇所有 p 元素 not ...

3D設計軟體中如何建立重合參考平面?

3d設計師在產品設計過程中,當需要在3d空間內繪製2d草圖時,便會用到參考平面。那麼,如何在3d設計軟體中建立重合參考平面呢?由浩辰cad公司研發的浩辰3d設計軟體中提供了更智慧型高效的建立重合參考平面功能,下面和小編一起來了解一下吧!在圖形視窗中,選擇平的面或現有參考平面。當根據模型上的平的面建立...