Mono被定义为具有基本rx运算符的Reactive Streams Publisher,它通过发出元素成功完成,并且Flux与0到N个元素的形式相同。 何时以及为何只使用Mono而不是Flux只用于一个元素流?
答案 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
,这会立即证明您预期不会出现多个结果。