跳到主要内容

Mono,一个异步的 0-1 结果

Doubao 中英对照 Mono, an Asynchronous 0-1 Result

下图展示了 Mono 如何转换一个元素:

Mono

Mono<T> 是一种专用的 Publisher<T>,它通过 onNext 信号至多发出一个元素,然后以 onComplete 信号结束(成功的 Mono,无论有无值),或者只发出一个 onError 信号(失败的 Mono)。

大多数 Mono 实现都应在调用 onNext 之后立即对其 Subscriber 调用 onComplete。Mono.never() 是一个例外:它不发出任何信号,从技术上讲这并不被禁止,尽管在测试之外没什么用处。另一方面,onNext 与 onError 的组合则被明确禁止。

Mono 只提供了 Flux 可用操作符的一个子集,并且某些操作符(尤其是那些将 Mono 与另一个 Publisher 组合的操作符)会切换为 Flux。例如,Mono#concatWith(Publisher) 返回一个 Flux,而 Mono#then(Mono) 返回另一个 Mono。

请注意,您可以使用 Mono 来表示只有完成概念、没有值的异步过程(类似于 Runnable)。要创建这样的过程,您可以使用一个空的 Mono<Void>。