next()vs Single()哪个有效?

时间:2019-02-05 18:46:15

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

我想从助焊剂转换成单声道。但是,我无法决定何时使用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);`

2 个答案:

答案 0 :(得分:1)

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

另一方面,

single()希望首先发出一个元素。如果不是这种情况,并且发出零个或多个元素,则会发出错误信号。

选择哪种取决于您的用例。如果保证源仅发射一个元素,则可以使用single()。否则,请使用next()

答案 1 :(得分:0)

除了a better oliver所说的话,如果有超强保证,您所拥有的Publisher最多只能发射一个onNext,则您可以通过使用Mono将其变成Mono.fromDirect(Publisher)-不带安全带-。