Ron*_*6er 4 java reactive-programming spring-webflux
我试图理解反应式程序的一件事是适当地处理没有结果的情况。
假设我有一个 API,可以选择检索用户的最新订单。我想将没有找到用户的行为留给调用者。在普通的旧java中,我会写这样的东西:
Optional<Order> getLatestOrder(int userId) { ... }
在 webflux 中,我试图弄清楚是否应该返回等效函数Mono<Optional<Order>>或Mono<Order>。
如果我添加getLatestOrder()到反应流中,如果我发出空单声道,它可能会停止。做类似的事情也感觉很奇怪:
getLatestOrder().defaultIfEmpty(new Order());
因为现在感觉就像一个哨兵值,代表它不存在。
Mono是否有关于使用and的模式的指导Optional?Optional当你真的想表达一些不存在的东西时,有没有正确的方法可以完全放弃?
我开始在一个小项目中使用 webflux,我们遇到了同样的问题。我们决定返回Mono<Order>
大部分时间,然后我们用它switchIfEmpty(Mono<? extends T> alternate)来抛出错误或用替代方法恢复
在我们的用例中switchIfEmpty(),defaultIfEmpty()给我们足够的控制权来处理空结果。
| 归档时间: |
|
| 查看次数: |
5417 次 |
| 最近记录: |