doc: 阅读reactor文档
This commit is contained in:
@@ -57,3 +57,19 @@ reactor引入了两个实现`Publisher`的类:`Mono`和`Flux`。
|
||||
上述两个类代表了在异步处理场景中的大致基数。
|
||||
- Mono:例如,对于http请求的场景,一个请求只会产生一个响应,故而对响应执行`count`操作并没有任何意义。此时,可以通过`Mono<HttpResponse>`来代表http调用的结果,`Mono`中只提供了上下文中包含`0...1`个元素的对应操作
|
||||
- 当执行某些`可能会改变异步处理中最大基数的操作`时,可能会导致类型的改变,例如执行`Flux`中的`count`操作将会返回`Mono<Long>`的类型
|
||||
|
||||
### Flux `0...n`
|
||||

|
||||
|
||||
`Flux<T>`是一个标准的`Publisher<T>`,代表基数为`0...n`的异步序列,其可以被`completion signal`或异常所终止。根据reactive stream标准,存在三种signal,且信号会转化为对下游`onNext`、`onComplete`、`onError`的调用。
|
||||
|
||||
Flux是一个通用的reactive类型,并且,所有的event type都是可选的。
|
||||
- 当没有`onNext`事件但是存在`onComplete`事件,代表一个空的有限序列
|
||||
- 当`onNext`和`onComplete`事件都不存在时,代表一个空的无限序列
|
||||
- 无限序列并不一定为空,例如`Flux.interval(Duration)`会产生一个`Flux<Long>`,其是无限的并且发送tick
|
||||
|
||||
### Mono `0...1`
|
||||
`Mono<T>`是一个标准的`Publisher<T>`,其通过`onNext`信号发送至多一个item,然后通过`onComplete`信号结束(成功场景);或直接通过`onError`信号结束(失败场景)。
|
||||
|
||||
大多数Mono实现在调用完subscriber的`onNext`方法之后,预计会立马调用subscriver的`onComplete`方法。但是,`Mono.never`是一个例外,其并不会发送任何信号,并且其`onNext`和`onError`的组合是被明确禁止的。
|
||||
|
||||
|
||||
BIN
spring/webflux/image.png
Normal file
BIN
spring/webflux/image.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 42 KiB |
Reference in New Issue
Block a user