Реактор проекта. Mono.map () против Mono.flatMap () - PullRequest
0 голосов
/ 07 июня 2019

В чем принципиальная разница между ними с точки зрения Mono?Из документации я прочитал, что flatMap действует асинхронно и map синхронно.Но это не имеет смысла для меня, потому что Mono - это параллелизм, и этот момент не понятен.Может ли кто-нибудь перефразировать его более понятным образом?

Тогда в документации для flatMap указано (https://projectreactor.io/docs/core/release/api/reactor/core/publisher/Mono.html#flatMap-java.util.function.Function-):

Transform the item emitted by this Mono asynchronously, returning the 
value emitted by another Mono (possibly changing the value type).

Какой еще моно имеется в виду?

1 Ответ

2 голосов
/ 08 июня 2019

Mono#flatMap принимает Function, который преобразует значение в другое Mono.Этот Mono может представлять некоторую асинхронную обработку, например HTTP-запрос.

С другой стороны, Mono#map принимает Function, который преобразует значение типа T в другое значение типаR.Таким образом, это преобразование выполняется обязательно и синхронно (например, преобразование String в URL экземпляр).

Другая тонкость с flatMap заключается в том, что оператор подписывается на сгенерированный Mono, в отличие отчто произойдет, если вы передадите тот же Function на map.

...