RxAndroid: Как излучать молнию наблюдаемой каждую минуту?

1
Observable<List<Stop>> zippedObservable = Observable.zip(observableList, objects -> {
    List<Stop> stopList = Collections.emptyList();
    for (Object obj : objects) {
        stopList.add((Stop) obj);
    }
    return stopList;
});

У меня есть переменная zippedObservable, которая была заархивирована несколькими наблюдаемыми.

disposable.add(zippedObservable.observeOn(AndroidSchedulers.mainThread())
    .subscribeWith(new DisposableObserver<List<Stop>>() {
    // onNext, onComplete, onError omitted
}));

Эта функция успешно генерирует элементы (zip stop list), но я бы хотел создавать эти элементы каждую минуту. Я предполагал, что оператор interval был бы идеален для этого случая, но я не мог понять, как смешать и функции zip и interval.

Это то что я пробовал

zippedObservale.interval() // cannot call interval operator here.
Observable.zip(...).interval() // cannot call interval operator here too.

Я ищу кого-то, чтобы объяснить, как смешать эти два оператора, чтобы я мог генерировать элементы каждую минуту. Спасибо.

Теги:
rx-java2
rx-android

1 ответ

1
Лучший ответ

interval - это статический метод, который создает Observable<Long> который испускает Long в данный период или интервал.

Чтобы достичь того, что вы описываете, вам нужно использовать одну из таких Observable чтобы Observable скорость вашего Observable:

Observable<List<Stop>> zipped = ...;
Observable<Long> interval = Observable.interval(...);
Observable<List<Stop>> everyMinute = zipped.sample(interval);

В этом случае он будет просто излучать не более одного результата zipped каждую минуту, независимо от того, что излучает еще zipped. Я не уверен, что ты хочешь.

Если вы хотите просто переиздавать одно и то же значение снова и снова, вы можете захотеть добавить repeat() между ними.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню