从对象中检索可迭代的通量

Retrieve Flux of iterable from an object

我有一个优惠券服务,它根据 id 给我优惠券,return 类型是 Mono。此外,我还有另一项服务可以列出 return 类型 Flux 的组织的所有员工。

我想为给定的优惠券 ID 创建一个 return Flux 的反应函数。如果 employeeDestinationType'NONE' 那么 return 空通量,如果它是 'SPECIFIED' 那么 return 来自 Coupon 对象的一组员工 ID,否则如果它是'ALL' 调用外部服务并 return 来自 Flux 的 'ids'。

这里是参考对象。

Coupon {
id,                        //Long
employeeDestinationType,   //NONE, SPECIFIED, ALL
employeeList               //Set<Long>
} 

下面是方法签名。

public Mono<Coupon> findCouponById(long id) {}

public Flux<Employee> listAllEmployees() {}

您可以简单地使用 flatMapMany 来实现:

  return findCouponById(id) 
      .flatMapMany(coupon -> {
        if(...) {
          return Flux.empty();
        } else if(...) {
          return Flux.fromIterable(List.of(...));
        } else {
          return externalCall();
        }
      });