2

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应用于流的 a 为每个输入值(在流中)生成任意数量的值(0...n)。所以一个平面图需要一个产生流的函数。

通量发出 0 个或更多项目,然后可选地完成或出错。

那么响应流上到底发生了什么?这是接收响应流并发出 0 个或多个 Alert 类对象的函数吗?因此,如果我们这样subscribealerts,我们可以通过 Web 客户端以反应方式获取它们。有人可以澄清我是否正确吗?

4

1 回答 1

3

对,那是正确的。标头的接收是第一个异步阶段,此时您会收到响应。然后,您可以使用flatMap异步检索正文。所说的 body 是 a Flux,因为在某些情况下,您可以获得多个未编组的对象(例如 SSE)。在这里你可能只会得到一个Alert

于 2017-07-25T08:44:06.920 回答