next() vs Single() 哪一个是有效的



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

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

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

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

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

最新更新