【问题标题】:when do I use Mono.flatMapIterable vs Mono.flapMapMany?我什么时候使用 Mono.flatMapIterable 和 Mono.flapMapMany?
【发布时间】:2019-09-21 19:07:14
【问题描述】:

reactor 新手,试图理解 Mono.flatMapManyMono.flatMapIterable 经常处理包含集合的对象的 Mono。

两者有什么区别:

        Mono.just(List.of("one", "two", "three")).log().flatMapMany(Flux::fromIterable).subscribe(System.out::println);
        Mono.just(List.of("one", "two", "three")).log().flatMapIterable(l -> l).subscribe(System.out::println);

我什么时候使用每种方法?

谢谢

【问题讨论】:

    标签: spring-webflux project-reactor


    【解决方案1】:

    Mono#flatMapMany 是一个通用的一对多运算符。
    Mono#flatMapIterable 是一个特殊的运算符,用于将表示为Iterable<T> 的项目“展平”为T 的反应流。

    尽可能使用Mono#flatMapIterable(映射器可以返回Iterable),因为它已经过优化,当您的映射器返回Publisher 项目时使用Mono#flatMapMany

    【讨论】:

    • 谢谢,让我困惑的是在 flatMapIterable 调用中放什么,它是否相当于(如果 flatMapIterable 允许这样做)Mono.just(List.of("one", "two", "three")).log().flatMapIterable().map(item -> doSomething(item).subscribe(System.out::println);
    • 一个常见的例子:users.flatMapIterable(user -> user.getFavouriteAnimals())
    猜你喜欢
    • 2023-03-08
    • 1970-01-01
    • 2021-09-07
    • 1970-01-01
    • 2011-01-03
    • 2020-12-07
    • 2010-09-21
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多