User.setPassword(...);
return reactiveMongoDbRepository.save(user); //returns Mono<User> which is returned by the Controller to the View
return Mono.just(user).map.flatmap(setPasswordSomewhereInThisHardToFollowChain).then.whatever.doOnSuccess(reactiveMongoDbRepository::save);
当您需要顺序、异步和惰性执行时,请使用流水线。在所有其他情况下(当您使用非阻塞代码时),您可以自由选择任何方法,通常最好使用最简单的方法。
顺序非阻塞代码可以组织在函数中,您可以使用map/filter/doonnext/...组件。
例如,考虑以下订单
价格计算代码。
class PriceCalculator {
private final Map<ProductCode, Price> prices;
PriceCalculator(Map<ProductCode, Price> prices) {
this.prices = prices;
}
PricedOrder calculatePrice(Order order) { // doesn't deal with Mono/Flux stuff
Double price = order.orderLines.stream()
.map(orderLine -> prices.get(orderLine.productCode))
.map(Price::doubleValue)
.sum();
return new PricedOrder(order, price);
}
}
class PricingController {
public Mono<PricedOrder> getPricedOrder(ServerRequest request) {
OrderId orderId = new OrderId(request.pathVariable("orderId"));
Mono<Order> order = orderRepository.get(orderId);
return order.map(priceCalculator::calculatePrice)
}
}
问题内容: 我正在将用RxJava 1.x编写的小项目转换为Reactor3.x。一切都很好,除了我找不到如何用合适的替代品代替。我有,我需要将其转换为。 问题答案: 在Reactor 3中,根据原始来源(数组,可迭代等),运算符被专门化为几个变体。 在您的情况下使用。
我有下面的反应代码使用通量在反应堆核心: 正如您所看到的,对于我的流程的外部源(FluxSink.OverflowStrategy.Latest),我对此进行了背压处理。但是,我还想为我的进程配置redis(redishashreactiveCommands.hmset(key,map))的背压,因为它对我的进程来说可能是一个比外部源更大的瓶颈。我希望我需要为redis部分创建另一个flux并将它
问题内容: 我看到了一些使用 Promise 访问FB Graph API 的Facebook登录服务的示例。 范例1 : 以及获得响应时使用的服务 范例2 : JSFiddle 问题是: 上面的示例有什么 区别 ? 使用 $ q 服务的 原因 和 案例 是什么? __ 以及它如何 运作 ? 问题答案: 这并不是您问题的完整答案,但是希望当您尝试阅读服务文档时,这将对您和其他人有所帮助。我花了一段
我已经将ViewPager和number of Fragment实现为子级,这里每个子级都覆盖自己的。 在我的应用程序中,导航行为是随机的,不是每次都有顺序。因为页面查看器执行缓存来加载额外的子级,这就是我的问题所在。我不确定何时应该初始化/释放子类成员。 需要你们的建议,在这种情况下使用PageViwer是否更好,或者我应该为每个组件使用传统的活动流。
我正在制作一个基于Java EE的产品,其中我使用了GlassFish 3和EJB 3.1。 我的应用程序有会话bean,一个调度程序,并且使用web服务。我最近了解了Apache TomEE,它支持上下文和依赖注入(CDI)。GlassFish容器也支持CDI。 如果我不需要CDI也不提供的任何特性,我可以替换会话bean吗?如果那样的话,我能得到什么好处呢?
问题内容: 我有一个MonoA。对象A包含两个列表。我想直接创建两个助焊剂。没有block(),这可能吗? 问题答案: 使用Mono.flatMapMany()方法: