本文介紹了如何按順序執行單元表的處理方法,對大家解決問題具有一定的參考價值,需要的朋友們下面隨著小編來一起學習吧!
問題描述
我有一個要處理的單聲道列表,但它們必須按順序執行,而且只有在前一個單聲道完成后才能執行下一個單聲道。
private Mono<List<Result>> processGoals(List<> goals,Data data) {
List<Mono<Result>> plans = goals
.stream()
.map(plan -> processGoal(plan, data))
.collect(Collectors.toList());
}
我嘗試使用
return Flux.concat(plans).subscribeOn(Schedulers.single()).collectList();
但這會在前一個單聲道完成之前執行下一個單聲道。
推薦答案
Flux#concatMap
是此情況的最佳選擇。
它將按順序合并每個映射的發布者,并一次激活一個發布者,而不必顯式定義concurrency
參數。
這里有一個完整的示例:
Flux.fromIterable(goals))
.concatMap(goal -> processGoal(goal, data))
.collectList();
這篇關于如何按順序執行單元表的文章就介紹到這了,希望我們推薦的答案對大家有所幫助,