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 次 |
最近记录: |