我有一個想要處理的單聲道串列,但它們必須按順序執行,并且也應該僅在前一個單聲道完成后才執行下一個。
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();
但這會在前一個完成之前執行下一個單聲道。
uj5u.com熱心網友回復:
.flatMapSequential(goal -> processGoal(goal, data), 1)
最后一個引數 concurrency 1 很重要。我之前在沒有并發引數的情況下嘗試過這個,但沒有奏效。感謝@Michael McFadyen
uj5u.com熱心網友回復:
而不是混合兩種范式:Streams 和 Reactive Streams。你可以嘗試完全反應。
嘗試以下操作:
Mono<List<Result>> res = Flux.just(goals.toArray(Goal[]::new))
.flatMapSequential(goal -> processGoal(goal, data))
.subscribeOn(Schedulers.single())
.collectList();
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/369646.html
標籤:爪哇 春天 交易 反应式编程 弹簧-webflux
上一篇:二叉搜索樹中的插入方法
