我想在每个通量事件后链接一个单声道。mono发布者需要flux发布的每个事件的信息。响应应该是包含通量事件和单响应数据的通量。
挖掘之后,我在平面图中找到了一张Map。代码如下所示:
override fun searchPets(petSearch: PetSearch): Flux<Pet> {
return petRepository
.searchPets(petSearch) // returns Flux<pet>
.flatMap { pet ->
petService
.getCollarForMyPet() // returns Mono<collar>
.map { collar -> PetConverter.addCollarToPet(pet, collar) } //returns pet (now with with collar)
}
}
我主要关心的是:
代码气味是在平面图中使用Map的吗?
宠物的可变内容是否会受到多个流量事件和单流事件的影响?
有没有更好的方法来处理这种行为?
1条答案
按热度按时间46qrfjad1#
这种方法非常好。
React流规范要求
onNext
比赛项目不重叠,所以比赛条件不会有问题。flatMap
但是引入了并发性,因此对PetService
将并行运行。这不应该是个问题,除非searchPets
发出一些Pet
两次。并不是因为这种并发性,
flatMap
在这种情况下可以重新订购宠物。想象一下搜索结果petA
那么petB
,但是petService
需要petA
需要更长的时间。在平面图上,petB
会先发射(带项圈),然后petA
.