我有以下代码:
function not implemented
此方法:
ffmpeg
看起来像:
public Flux<Offer> getAllFilteredOffers(Map<String, String> searchParams) {
Flux<ProductProperties> productProperties = productPropertiesService.findProductPropertiesBySearchCriteria(searchParams);
Flux<Product> products = productService.findProductsByPropertyId(productProperties);
Flux<Product> productsByAvailability = productService.getAllProductsByAvailability(products, searchParams);
Flux<Offer> offers = offerRepository.findByPropertiesIds(productsByAvailability);
return offers;
如何将productService.getAllProductsByAvailability(products, searchParams);
传递到public Flux<Product> getAllProductsByAvailability(Flux<Product> products,
Map<String, String> searchParams) {
以保持非阻塞操作?
我已经读过地图被阻止,应该避免。
也许是这样吗?
List<Product>
我不是Webflux方面的专家,目前我正试图弄清楚如何处理以下问题:我有Flux,但在第二步中,我需要从以前的Flex <>对象中提取一些数据-保持非阻止流。
谢谢!
答案 0 :(得分:1)
我不知道您从何处了解map
,但是如果您查看官方文档Webflux map operator,则与阻塞无关,它仅对每个项目使用同步功能。
使用此代码:
productPropertiesService.findProductPropertiesBySearchCriteria(searchParams)
.flatMap(productProperties -> productService.findProductsByPropertyId(productProperties))
.collectList() (1)
.flatMapMany(products -> productService.getAllProductsByAvailability(Flux.fromIterable(products), searchParams)) (2)
1)收集所有要列出的元素并转换为Mono>
2)从List创建FLux并将其作为参数提供,flatMapMany将Mono转换为Flux