#android #rx-java #observable
#Android #rx-java #наблюдаемый
Вопрос:
Я хочу создать наблюдаемый объект, который излучается каждые x секунд. Этот x может быть переменной в зависимости от некоторого условия.
Прямо сейчас у меня есть что-то, что отправляет мне событие за 4 секунды.
Observable.interval(4, TimeUnit.SECONDS)
.takeUntil(new Func1<Long, Boolean>() {
@Override public Boolean call(Long aLong) {
return !showNextText;
}
})
.observeOn(AndroidSchedulers.mainThread())
.subscribeOn(Schedulers.newThread())
.subscribe(new Action1<Object>() {
@Override public void call(Object o) {
}
}, new Action1<Throwable>() {
@Override public void call(Throwable throwable) {
}
}, new Action0() {
@Override public void call() {
}
});
Ответ №1:
Используйте concatMap
и timer
.
Этот пример будет выдан через 1 секунду, затем через 2 секунды, а затем через 3 секунды.:
Observable.just(1, 2, 3)
.concatMap(n -> Observable.timer(n, TimeUnit.SECONDS))
.doOnNext(System.out::println)
.toBlocking().subscribe();
Комментарии:
1. Я сильно подозреваю, что оператору требовалось переменное количество времени, а не ряд констант.