您好, 欢迎来到 !    登录 | 注册 | | 设为首页 | 收藏本站

反应堆中的地图与平面地图

反应堆中的地图与平面地图

区别在方法签名中可见:

这是主要提示:您 可以 将传递Function<T, Publisher<V>>map,但它不知道如何处理Publishers,这将导致Flux<Publisher<V>>一系列惰性发布者。

另一方面,每个flatMap期望a 。它知道如何处理它:订阅它并在输出序列中传播它的元素。其结果,返回类型:将压扁每个内进入的输出序列 的所有 的第Publisher<V>``T``Flux<V>``flatMap``Publisher<V> __V

对于每个<T>输入元素,flatMap将其映射到Publisher<V>。在某些情况下(例如HTTP请求),该发布者将仅发出一项,在这种情况下,我们非常接近asyncmap

但这就是简朴的情况。一般情况是a Publisher可以发出多个元素,并且flatMap效果也一样。

举例来说,假设您有一个反应型数据库,并且您从一系列用户ID中获取了flatMap,并且请求返回了用户Badge。您最终Flux<Badge>将获得所有这些用户的所有徽章。

是的:它在操作员应用它的方式(一个简单的方法调用,然后操作员发出结果)上是同步的,并且在函数本身不应该阻止操作员调用它的意义上说是非阻塞的。换句话说,它不应该引入延迟。这是因为Fluxa总体上还是异步的。如果阻塞中间序列,则将影响其余的Flux处理过程,甚至其他过程Flux

如果您的地图函数正在阻止/引入延迟,但无法将其转换为返回Publisher,请考虑publishOn/subscribeOn以抵消在单独线程上的阻止工作。

其他 2022/1/1 18:26:15 有532人围观

撰写回答


你尚未登录,登录后可以

和开发者交流问题的细节

关注并接收问题和回答的更新提醒

参与内容的编辑和改进,让解决方法与时俱进

请先登录

推荐问题


联系我
置顶