gpt4 book ai didi

spring - 那么 spring webflux 中的 thenEmpty、thenMany 和 flatMapMany 是什么?

转载 作者:行者123 更新时间:2023-12-04 11:08:24 25 4
gpt4 key购买 nike

我不明白 then 的用法和区别,thenEmpty , thenManyflatMapManyFluxMono在 Spring webflux。

最佳答案

  • flatMap对比 flatMapMany

  • 在函数式编程中, flatMap返回与承载该方法的类型相同的类型,因此对于 Mono<T> , flatMap返回 Mono .这意味着内部 Publisher 只能发射一个元素(或者它被截断了)。我们通过 Mono#flatMap 强制执行了这一点。拿个 Function<T, Mono<R>> .

    因此,我们需要一个更随意的替代方案 Publisher可以发出不止一种元素。因此 Mono#flatMapMany(Function<T, Publisher<R>>)返回 Flux<R> .

    TL;博士: Mono#flatMap适用于 异步 但是 一对一源中元素的变换 Mono , Mono#flatMapMany适用于 1 对 N 异步 转换(如 Flux#flatMap)。
  • then , thenEmptythenMany

  • 所有 thenXXX Mono 上的方法有一个共同的语义:它们忽略源 onNext发出信号并对完成信号使用react( onCompleteonError ),此时使用各种选项继续序列。因此,这会改变返回的 Mono 的泛型类型。 :
  • then只会重放源终端信号,导致 Mono<Void>表明这永远不会发出任何信号 onNext .
  • thenEmpty不仅返回 Mono<Void> ,但它需要一个 Mono<Void>作为参数。它表示源完成信号和第二个空 Mono 完成信号的串联。换句话说,它在 A 和 B 都按顺序完成时完成,并且不发出数据。
  • thenMany等待源完成然后播放来自其 Publisher<R> 的所有信号参数,导致 Flux<R>这将“暂停”直到源完成,然后在重播其完成信号之前从提供的发布者发出许多元素。
  • 关于spring - 那么 spring webflux 中的 thenEmpty、thenMany 和 flatMapMany 是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48254774/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com