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.
Я ищу кого-то, чтобы объяснить, как смешать эти два оператора, чтобы я мог генерировать элементы каждую минуту. Спасибо.
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()
между ними.