【问题标题】:next() vs Single() Which one is effective?next() vs Single() 哪个有效?
【发布时间】:2019-06-29 16:01:14
【问题描述】:

我想从通量转换为单声道。但是,我无法决定何时使用single()next(),不知道哪个更有效?

Flux<String> optionalIdsFlux = Flux
    .fromIterable(result.getPersonalizationEntity())
    .filter(i -> i.getKey().equals(PERSONALIZATION_KEY))
    .next()  //  or single() ??
    .map(DataEntity::getValue)
    .flatMapMany(Flux::fromIterable);`

【问题讨论】:

    标签: java spring spring-webflux project-reactor reactive


    【解决方案1】:

    它们实际上是完全不同的。 next() 采用第一个发出的值,然后取消订阅。

    single(),另一方面,期望一开始就发出一个元素。如果不是这种情况,并且发出了零个或多个元素,则会发出错误信号。

    选择哪一个取决于您的用例。如果保证源只发出一个元素,那么您可以使用single()。否则使用next()

    【讨论】:

    • 感谢您的回复。在我的情况下,源保证只发出一个元素,使用 next() 效率低吗?
    • @MertBulut 效率在这里真的不是问题。如果有的话next() 会更有效率。
    【解决方案2】:

    除了a better oliver 所说的之外,如果有一个超强保证,你的Publisher 最多只发出一个onNext,你可以把它变成一个@987654324 @ - 不系安全带 - 使用Mono.fromDirect(Publisher)

    【讨论】:

    • 感谢西蒙的关注。
    猜你喜欢
    • 2010-10-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-07-28
    • 1970-01-01
    • 1970-01-01
    • 2021-04-13
    相关资源
    最近更新 更多