例如,在this post中,我试图理解为什么在response流上使用平面映射()(直接从引用复制粘贴)。
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客户端以一种被动的方式获取它们。有没有人能澄清一下我说的对不对?
发布于 2017-07-25 16:44:07
是的没错。报头的接收是第一个异步阶段,此时您将获得响应。然后使用flatMap异步检索正文。body是一个Flux,因为在某些情况下你可以得到多个未编组的对象(例如SSE)。在这里,您可能只会得到一个Alert。
https://stackoverflow.com/questions/45294205
复制相似问题