【发布时间】:2019-03-24 10:31:03
【问题描述】:
我终于学会了使用 Reactor 进行函数式编程。所以我是新手。
我要做的第一件事是使用 WebClient 调用外部 API。这个调用需要递归,因为响应提供了调用参数的下一个值,我需要在下一次调用中使用它,直到满足普通情况。
这是想出的:
Flux.from(p -> queryUntilNow())
.flatMap(res -> // res is object )
.subscribe( // process )
private Flux<ApiResp> queryUntilNow() {
return Flux.from(p -> {
queryAPI(since)
.doOnError(System.out::println)
.subscribe(apiResp -> {
if (since == apiResp.last) return;
since = apiResp.last;
queryUntilNow();
});
});
}
private Flux<ApiResp> queryAPI(int last) {
Flux<ApiResp> resp = kapi.get()
.uri("/OHLC?pair={pair}&since={since}&interval={int}", pair, last, interval)
.retrieve()
.bodyToFlux(ApiResp.class);
return resp;
}
看来我需要更多地调整我的思维以适应这种编程风格,所以请给我一些例子和解释。
谢谢!
【问题讨论】:
标签: java spring-webflux project-reactor