你什么时候需要使用Mono而不是Flux?

时间:2017-12-15 10:30:03

标签: spring spring-webflux

Mono被定义为具有基本rx运算符的Reactive Streams Publisher,它通过发出元素成功完成,并且Flux与0到N个元素的形式相同。 何时以及为何只使用Mono而不是Flux只用于一个元素流?

3 个答案:

答案 0 :(得分:2)

Mono被设计为在发出一个元素时返回一个元素,然后Mono知道它完成了它的目的。当我们想要订阅更多元素时使用Flux,例如当我们期望返回集合时。

答案 1 :(得分:2)

在大多数情况下,Flux可能会取代Mono,但最好使用Mono,因为它只提供与零或一个项目相关的运算符

例如,Mono正在更具体的场景中使用,例如HTTP请求 (一个请求 - >一个响应)。

答案 2 :(得分:0)

在很多时候,您正在做一些计算或打电话给主管部门,并且您只能精确地预期一个结果(或者可能是零个或一个结果),而不是预期结果可能不同的聚会。在这种情况下,拥有 public function onAuthenticationSuccess(Request $request, TokenInterface $token, $providerKey) { if ($targetPath = $this->getTargetPath($request->getSession(), $providerKey)) { return new RedirectResponse($targetPath); } if ($this->security->isGranted('ROLE_ADMIN')) { $path = 'adresses_index'; } elseif ($this->security->isGranted('ROLE_USER')) { $path = 'users_profile'; } return new RedirectResponse($this->router->generate($path)); } 会逐渐变得有用。

将其与“常规” Java进行对比:您不会将Mono用作可以返回零或一个结果的任何技术的到达类。您宁可使用List,这会立即证明您预期不会出现多个结果。