如何並行運行通量,但按順序收集結果

帕特里克

我想並行運行通量,但按順序收集結果。假設我在並行執行一些任務後有 [3,2,1] 的通量我希望結果仍然是 [3,2,1]

val mono = Flux.fromIterable(3 downTo 1)
      .map { it.toString() }
      // this will return the same number
      .flatMap { number -> task(number) }
      .doOnNext { println("Number of $it") }
      // I got 1, 3, 2 which is good because I want it to run in parallel
      .collectList()
      .doOnNext { println(it) }
      // I still got [1,3,2] but I want it to be [3,2,1] according to the iterable order.
      .block()
石斑魚

我認為flatMapSequential運營商是你正在尋找的。

Flux.fromIterable(3 downTo 1)
      .map { it.toString() }
      .flatMapSequential { number -> task(number) }
      .doOnNext { println("Number of $it") }
      .collectList()
      .doOnNext { println(it) }

在這裡,flatMapSequential急切地訂閱其內部發布者(與 flatMap 並行),但根據需要按源元素的順序合併它們。

示例輸出:

3
1
2
[3, 2, 1]

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何按順序執行操作並更新 UI

按順序使用 Taurus 運行 JMeter 測試

在 Azure Devops 中按順序運行 Job

如何使用多線程使我的代碼不在 Python 中按順序運行

如何在 pycharm 文件下按順序運行我的文件?

如何按組按字母順序過濾行

確保 React set hook 按順序同步運行

協程:列表中的延遲操作按順序運行。

使用 Kotlin 協程按順序運行 evaluateJavascript() 函數

為什麼openmp中的循環按順序運行?

即使使用關鍵字 async,Kotlin 協程也會按順序運行

比較拖車列表順序並返回結果

以特定順序運行 Http 請求 JMeter

如何按值按字母順序對對象進行排序?

按字母順序按兩個標準對向量內部的結構進行排序

如何在不運行的情況下計算`fmt::format`的結果的長度?

如何在新方法中的方法中運行if語句的相同結果

如何對多個變量按順序測量 4 行

如何在 PHP 中按字母順序對 SplObjectStorage 集進行排序?

如何按最新到最舊的順序對文件列表進行排序

如何按數字順序對數據路徑進行排序?

函數總是按順序執行嗎?

按順序執行鎖(使用ConcurrentQueue和鎖)

從 python 運行 shell 命令,以及如何將結果存儲在文件中(文本或 Excel 或 csv 等...)

使用 make 運行命令與直接在 shell 中運行它會產生不同的結果

在 onClick 期間按下鍵盤按鈕並基於該按鈕運行不同的功能

如何從文本數字中提取並按特定順序計算它們?

在許多數據幀上運行函數,將結果添加到另一個數據幀,並使用原始 df 的名稱動態命名結果列

您如何根據另一列的值對一列中的值運行算術運算並按第三列進行分組?