我想使用reactor实现:
for (val worker : getWorkers(request)) {
val response = worker.tryDo(work);
if (response != null) {
return response;
}
}
return null;
getWorkers
可转返回Flux<Worker>
, tryDo
也可以返回单声道。
关键是我想要一个或零个响应,并且仅在当前 worker.tryDo
时才尝试下一个。失败。
我需要哪个运营商?我在 document 中找不到答案.
最佳答案
假设您可以重新设计 tryWork 以在没有工作时返回空的 Mono,而不是返回 null,则可以使用 getWorkers(request).flatMap(worker ->worker.tryDo(work), 1).next()
flatMap
的 1
参数指示它仅考虑 worker 1 乘 1。
返回空单声道的工作人员实际上不会影响 flatMap 的输出。
Flux.next()
通过丢弃第一个元素之后的元素并取消源来转换为 Mono
。
关于java react 堆filterAndMap?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49082370/