我是一个新的React,所以有点挣扎与范式的转变,但也许有人能帮我克服这一点?
我的控制器将mono(称为“limit”)作为服务参数传递给我的服务。mono在subscribe上发出一个整数,服务使用该整数来执行其工作,它返回一个通量。
在我的服务方法中,我需要订阅mono,但是我需要在我的服务方法(对其他端点进行web客户端rest调用)之前订阅mono,因为rest调用中需要限制值。现在,我知道subscribe将在某个时候完成,但是它是在主线程继续完成方法之后完成的。我的代码:
public Flux<User> getUserdata(Mono<Integer> limit) {
return
Flux.from(WebClient.create()
.get()
.uri(uriBase, uri -> {
uri.queryParam("_limit", limit.subscribe(k -> String.valueOf(k)));
})
.accept(MediaType.APPLICATION_JSON)
.retrieve()
.bodyToFlux(User.class));
}
如果我硬编码limit参数,这就行了。我需要的人来确保订阅完成。我知道我仍然对sync/async有点混淆,所以有什么想法/建议如何以React/正确的方式来做这件事?
蒂亚,
彼得
1条答案
按热度按时间noj0wjuj1#
Mono
以及Flux
是Producers
. 就是那个subscribing
被称为Consumer
. 对你来说,最后Consumer
可能是发起呼叫的人。很可能是一个网页,或其他服务调用您的服务。我的意思是既然你是
producer
很可能你不该打电话subscribe
既然你不是决赛consumer
. 一旦你看到自己这样做,你可以告诉这是一个代码气味。我已经重写了你提供的例子下面与一些意见。