Создать объект Mono Array с сохранением исходного порядка - PullRequest
0 голосов
/ 10 сентября 2018

Мне нужно реализовать функцию, которая возвращает Mono >.В качестве аргумента он принимает список объектов и обрабатывает их с помощью функции, которая возвращает Mono .Функция должна сохранять исходный порядок, то есть первый элемент в возвращаемом списке должен быть создан из первого элемента из списка аргументов.Пока у меня есть следующее решение, но оно не поддерживает требуемый порядок.Возможно ли это даже с Flux?

       private fun createItems(objects: List<Someobjects>): Mono<Array<ProcessedObject>> {
         return Flux.fromIterable(objects)
           .flatMap {
             processObject(it)
           }.collectList().map { it.toTypedArray() }
}

Редактировать: уточнить небольшой processObject возвращает Mono

1 Ответ

0 голосов
/ 10 сентября 2018

Вы можете попробовать с concatMap вместо flatMap.

Вот ссылка на документ https://projectreactor.io/docs/core/release/api/reactor/core/publisher/Flux.html#concatMap-java.util.function.Function-

private fun createItems(objects: List<Someobjects>): Mono<Array<ProcessedObject> {
         return Flux.fromIterable(objects)
           .concatMap {
             processObject(it)
           }.collectList().map { it.toTypedArray() }
}

Разница между flatMap и concatMap заключается в том, что последний сохраняет первоначальный порядок.

...