Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Java Новый топик    Ответить
 Future.sequence(..) в скале и ??? в RXjava  [new]
andreykaT
Member

Откуда: Finland
Сообщений: 3233
Собссно вопрос. в скалке много и часто были кейсы с коллекциями врдое

Future[List[Future[T]]] там есть прекрасная приблуда чтоб свернуть List[Future[SomeObj]] -> Future[List[SomeObj]]
и дальше уже с ним что то там где надо делать. стильно модно реактивно

сейчас делаю кусок кода на рхджаве. там местами очень похожие подходы. НО. я уже 2 часа бьюсь не могу нигде найти пример похожей штуки но с обсервабл или синглом

суть List<Observable<SomeObj>> -> Observable<List<SomeObj>> или List<Single<>> -> Single<List<>>

я вот не вкачу никто так не делает потому что не надо, или кроме как через блокинггет этого не сделать у них на джаве?

Сообщение было отредактировано: 22 ноя 20, 14:52
22 ноя 20, 14:53    [22236556]     Ответить | Цитировать Сообщить модератору
 Re: Future.sequence(..) в скале и ??? в RXjava  [new]
chpasha
Member

Откуда:
Сообщений: 10037
я в этом ничего не понимаю :) , но по описанию похоже на forkJoin или zip в rxjs, т.е. дождаться выполнения всех Observable и скомбинировать их результат, так? Если да, то вроде гуглится легко - там есть вариант с массивом

List<Observable<SomeObj>> obsList = ....

Observable.zip(obsList, (arrayOfResults) -> todo склеить)
.subscribe(result -> System.out.println(result));


еще вариант с flatMap есть, но не берусь судить, какой здесь лучше/правильней, ибо видеть не видывал эту rxjava и уж тем более скалу :)

public Observable<Obj> whenAll(List<Observable<Obj>> tasks) {
    return Observable.from(tasks)
            //execute in parallel
            .flatMap(task -> task.observeOn(Schedulers.computation()))
            //wait, until all task are executed
            //be aware, all your observable should emit onComplemete event
            //otherwise you will wait forever
            .toList()
            //could implement more intelligent logic. eg. check that everything is successful
            .map(results -> true);
}
22 ноя 20, 15:41    [22236569]     Ответить | Цитировать Сообщить модератору
 Re: Future.sequence(..) в скале и ??? в RXjava  [new]
andreykaT
Member

Откуда: Finland
Сообщений: 3233
блин как всегда :)
спасибо друг!

второй вариант что надо.

странно второй вариант видел, но чуть в другой интерпретации. твоя то что надо.
22 ноя 20, 20:38    [22236714]     Ответить | Цитировать Сообщить модератору
 Re: Future.sequence(..) в скале и ??? в RXjava  [new]
andreykaT
Member

Откуда: Finland
Сообщений: 3233
блин второй вариант по ходу блокирующий. таж петрушка только в профиль.
23 ноя 20, 10:54    [22236989]     Ответить | Цитировать Сообщить модератору
 Re: Future.sequence(..) в скале и ??? в RXjava  [new]
andreykaT
Member

Откуда: Finland
Сообщений: 3233
с первым вариантом где туду склеить не понял что атм склеивать. зип обычно заюзан чтоб слить два листа в один лист используя последовательно по индексу объекты из первого и второго листов. не совсем понимаю причем тут он.
23 ноя 20, 11:09    [22237001]     Ответить | Цитировать Сообщить модератору
Все форумы / Java Ответить