[英]Spring 5 Web Reactive - Web Client - Use of flatmap() on the response stream
我试图理解为什么在这篇文章中例如在response
流上使用flatmap()(直接从引用粘贴粘贴的副本)
final ClientRequest request = ClientRequest.GET(url)
.accept(MediaType.TEXT_EVENT_STREAM).build();
Flux<Alert> alerts = webClient.exchange(request)
.flatMap(response -> response.bodyToFlux(Alert.class));
AFAIK,应用于流的flatmap
为每个输入值(流中)产生任意数量的值(0 ... n)。 因此,平面图具有产生流的功能。
助焊剂发出0个或更多项目,然后可选地完成或出错。
那么响应流到底发生了什么? 这是获取响应流并发出0类或更多类Alert的对象的函数吗? 因此,如果我们subscribe
alerts
,则可以以响应方式通过Web客户端获取alerts
。 有人可以澄清一下我是否正确吗?
对,那是正确的。 头的接收是第一个异步阶段,此时您将获得响应。 然后,您可以使用flatMap
异步检索主体。 所说的主体是Flux
,因为在某些情况下,您可以得到多个未编组的对象(例如SSE)。 在这里您可能只会收到一个Alert
。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.