【问题标题】:Reactor's Flux.combineLatest() with Flux and MonoReactor 的 Flux.combineLatest() 与 Flux 和 Mono
【发布时间】:2018-01-18 16:59:54
【问题描述】:

有人能解释一下为什么它会这样吗?

Flux.combineLatest(
    Tuples::fromArray,
    Flux.just(1, 2, 3),
    Mono.just("x"))
.collectList()
.block();
// [{3, "x"}]

Flux.combineLatest(
    Tuples::fromArray,
    Mono.just("x"),
    Flux.just(1, 2, 3))
.collectList()
.block();
// [{"x", 1}, {"x", 2}, {"x", 3}]

是否可以使其不受参数顺序的影响(我希望选项 2 是正确的)?

【问题讨论】:

    标签: java reactive-programming project-reactor reactive-streams


    【解决方案1】:

    由于just 中的每个值都是现成的,因此存在一种可以立即迭代元素的优化形式。在第一个 sn-p 中,第 3 个元素是第一个被订阅的元素,并且优化开始了,这使得整个序列看起来在第二个 Flux 被订阅时已经完成,因此您会看到结果。

    要停用该优化,您可以链接 .hide(),它应该会产生与案例 2 相同的结果。

    【讨论】:

    • 你的意思是我应该使用Flux.just(1, 2, 3).hide() 而不是简单的Flux.just(1, 2, 3)?试过这个,但不幸的是得到了同样的结果。
    猜你喜欢
    • 2021-11-23
    • 2019-01-07
    • 2021-06-12
    • 2020-09-25
    • 2021-09-30
    • 2020-09-14
    • 1970-01-01
    • 2020-06-26
    • 2018-07-04
    相关资源
    最近更新 更多