从对象中检索可迭代的通量
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();
}
});
我有一个优惠券服务,它根据 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();
}
});