next () vs Single () Какой из них эффективен? - PullRequest
0 голосов
/ 05 февраля 2019

Я хочу сыграть в моно из потока.Однако я не могу решить, когда использовать 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 голосов
/ 06 февраля 2019

В дополнение к тому, что сказал a better oliver, если есть сверхсильная гарантия , что Publisher, который у вас есть, излучает максимум один onNext, вы можете превратить его в Mono- без ремня безопасности на - с помощью Mono.fromDirect(Publisher).

0 голосов
/ 05 февраля 2019

Они на самом деле совсем другие.next() принимает первое выдаваемое значение и впоследствии отменяет подписку.

single(), с другой стороны, ожидает, что именно один элемент будет выделен в первую очередь.Если это не так, и испускается ноль или более элементов, то выдается сигнал об ошибке.

Какой из них выбрать, зависит от вашего варианта использования.Если источник гарантированно излучает ровно один элемент, тогда вы можете использовать single().В противном случае используйте next().

...