RxJava2 - Повторное использование последовательности операторов для нескольких цепочек Rx - PullRequest
0 голосов
/ 25 апреля 2018

У меня есть следующая цепочка Rx:

compositeDisposable.add(manager.getObservable()
            .map(objects -> modelMapper.map(objects))
            .map(modelObjects -> {
                cache.save(modelObjects);
                return modelObjects ;
            })
            .flatMapIterable(modelObjects -> modelObjects)
            .sorted(objectComparator)
            .toList()
            .map(modelObjects -> viewModelMapper.map(modelObjects))
            .subscribe(this::onObjectsLoaded));

Я хочу извлечь операторы flatMapIterable(modelObjects -> modelObjects), sorted(objectComparator) и toList() в отдельный метод, который я могу повторно использовать в нескольких цепочках Rx для сортировки объектов, поэтому цепочка будет выглядеть примерно так:

compositeDisposable.add(manager.getObservable()
            .map(objects -> modelMapper.map(objects))
            .map(modelObjects -> {
                cache.save(modelObjects );
                return modelObjects ;
            })
            .compose(sortObjects())
            .map(modelObjects -> viewModelMapper.map(modelObjects))
            .subscribe(this::onObjectsLoaded));

Возможно ли создать такой метод? Спасибо!

1 Ответ

0 голосов
/ 25 апреля 2018

Определите метод, который принимает Observable и возвращает Observable:

static <T> Observable<List<T>> sortListItem(Observable<List<T>> source,
        Comparator<? super T> comparator) {
    return source.flatMapIterable(v -> v)
                .toSortedList(comparator)
                .toObservable();
}

compositeDisposable.add(manager.getObservable()
        .map(objects -> modelMapper.map(objects))
        .map(modelObjects -> {
            cache.save(modelObjects);
            return modelObjects ;
        })
        .compose(ThisClass::sortListItem)
        .map(modelObjects -> viewModelMapper.map(modelObjects))
        .subscribe(this::onObjectsLoaded));
...