Amr*_*led 5 spring project-reactor spring-webflux
我不明白使用和之间的区别,然后是空,然后很多和flatMapMany在春天webflux上的Flux或Mono.
Sim*_*slé 18
flatMap VS flatMapMany在函数式编程中,flatMap返回与承载方法的类型相同的类型,因此Mono<T>,flatMap返回a Mono.这意味着内部只能发射一个元素Publisher(或者它被截断).我们通过Mono#flatMap采取一个强制执行Function<T, Mono<R>>.
因此,我们需要一种Publisher可以发出多于一种元素的任意替代方案.因此Mono#flatMapMany(Function<T, Publisher<R>>)返回一个Flux<R>.
TL; DR:Mono#flatMap用于异步但源中元素的1对1转换Mono,Mono#flatMapMany用于1到N的异步转换(如Flux#flatMap).
then,thenEmpty和thenMany所有thenXXX方法Mono都有一个共同的语义:它们忽略源onNext信号并对完成信号(onComplete和onError)作出反应,此时用各种选项继续序列.因此,这可以更改返回的泛型类型Mono:
then将只重放源终端信号,导致a Mono<Void>表示从不发出任何信号onNext.thenEmpty不仅返回a Mono<Void>,而且还需要Mono<Void>一个参数.它代表了源完成信号的级联然后第二,空单声道完成信号.换句话说,当A然后B都顺序完成并且不发出数据时,它就完成了.thenMany等待源完成然后播放来自其Publisher<R>参数的所有信号,从而导致Flux<R>"暂停"直到源完成,然后在重放其完成信号之前从提供的发布者发出许多元素.| 归档时间: |
|
| 查看次数: |
7393 次 |
| 最近记录: |