[英]A difference between Mono.mapNotNull(....) and Mono.flatMap(Mono.justOrEmpty(....))
[英]Difference between Mono.then and Mono.flatMap/map
假設我想調用 webservice1,如果第一個成功則調用 webservice2。
我可以執行以下操作(只是指示性偽代碼):-
Mono.just(reqObj)
.flatMap(r -> callServiceA())
.then(() -> callServiceB())
或者
Mono.just(reqObj)
.flatMap(r -> callServiceA())
.flatMap(f -> callServiceB())
將 mono.just() 用於單個元素時,兩者有什么區別?
flatMap
應該用於非阻塞操作,或者簡而言之,任何返回 Mono、Flux 的操作。
map
用於在固定時間內對 object /data 進行轉換。 同步完成的操作。
例如:
return Mono.just(Person("name", "age:12"))
.map { person ->
EnhancedPerson(person, "id-set", "savedInDb")
}.flatMap { person ->
reactiveMongoDb.save(person)
}
當您想忽略以前 Mono 中的元素並希望完成 stream 時,應該使用then
復制粘貼 TL DR 答案:
如果您關心之前計算的結果,可以使用 map()、flatMap() 或其他 map 變體。 否則,如果您只想完成之前的 stream,請使用 then()。
在您的示例中,看起來您的服務調用不需要上游的輸入,那么您可以使用它來代替:
Mono.just(reqObj)
.then(() -> callServiceA())
.then(() -> callServiceB())
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.