如何使用项目反应器实现调用重复,直到满足特定条件?
How to implement a call repetition until a certain condition is met using project reactor?
有没有什么方法可以使用项目反应堆来做这样的事情?
fetchSystemUpdates() // return Mono<List<>>
.repeatUntil(List::isNotEmpty)
.map(...) // when its not empty do some processing
实现它的一种方法是使用 expand
重复请求,直到收到 non-empty 列表并过滤掉下游的空结果。
fetchSystemUpdates()
// repeat until results are not empty
.expand(res -> {
if (!res.isEmpty()) {
return Mono.empty(); // stop "repeat loop"
}
return fetchSystemUpdates()
// add delay before making subsequent call
.delaySubscription(Duration.ofMillis(1000));
})
.filter(res -> !res.isEmpty()) // filter out non-empty results
.single() // convert Flux to Mono
.map(...); // when its not empty do some processing
}
有没有什么方法可以使用项目反应堆来做这样的事情?
fetchSystemUpdates() // return Mono<List<>>
.repeatUntil(List::isNotEmpty)
.map(...) // when its not empty do some processing
实现它的一种方法是使用 expand
重复请求,直到收到 non-empty 列表并过滤掉下游的空结果。
fetchSystemUpdates()
// repeat until results are not empty
.expand(res -> {
if (!res.isEmpty()) {
return Mono.empty(); // stop "repeat loop"
}
return fetchSystemUpdates()
// add delay before making subsequent call
.delaySubscription(Duration.ofMillis(1000));
})
.filter(res -> !res.isEmpty()) // filter out non-empty results
.single() // convert Flux to Mono
.map(...); // when its not empty do some processing
}