本文介紹了如何按順序執(zhí)行單元表的處理方法,對(duì)大家解決問(wèn)題具有一定的參考價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)吧!
問(wèn)題描述
我有一個(gè)要處理的單聲道列表,但它們必須按順序執(zhí)行,而且只有在前一個(gè)單聲道完成后才能執(zhí)行下一個(gè)單聲道。
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();
但這會(huì)在前一個(gè)單聲道完成之前執(zhí)行下一個(gè)單聲道。
推薦答案
Flux#concatMap
是此情況的最佳選擇。
它將按順序合并每個(gè)映射的發(fā)布者,并一次激活一個(gè)發(fā)布者,而不必顯式定義concurrency
參數(shù)。
這里有一個(gè)完整的示例:
Flux.fromIterable(goals))
.concatMap(goal -> processGoal(goal, data))
.collectList();
這篇關(guān)于如何按順序執(zhí)行單元表的文章就介紹到這了,希望我們推薦的答案對(duì)大家有所幫助,