我想从助焊剂转换成单声道。但是,我无法决定何时使用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);`
答案 0 :(得分:1)
它们实际上是完全不同的。 next()
采用发出的第一个值,然后取消订阅。
single()
希望首先发出一个元素。如果不是这种情况,并且发出零个或多个元素,则会发出错误信号。
选择哪种取决于您的用例。如果保证源仅发射一个元素,则可以使用single()
。否则,请使用next()
。
答案 1 :(得分:0)
除了a better oliver
所说的话,如果有超强保证,您所拥有的Publisher
最多只能发射一个onNext
,则您可以通过使用Mono
将其变成Mono.fromDirect(Publisher)
-不带安全带-。