, имеющие две наблюдаемыхRxJava только испускает элемент, если другой источник не будет пункт в течение некоторого периода
Observable<Void> cancelButtonClick
= RxView.clicks(btnCancel);
Observable<Void> actionButtonClick
= RxView.clicks(btnSomeAction)
Проблема
Попытки испускают значения из actionButtonClick
потока, если cancelButtonClick
потока не будет излучать значение для 10 секунд
Пробные:
final DateTime[] lastCancelDate = new DateTime[1];
cancelButtonClick
.map(new Func1<Void, DateTime>() {
@Override
public DateTime call(Void aVoid) {
return DateTime.now();
}
})
.subscribe(new Action1<DateTime>() {
@Override
public void call(DateTime dateTime) {
lastCancelDate[0] = dateTime;
}
});
actionButtonClick
.delay(10, TimeUnit.SECONDS)
.filter(new Func1<Void, Boolean>() {
@Override
public Boolean call(Void aVoid) {
return
lastCancelDate[0] == null
|| (new Duration(lastCancelDate[0], DateTime.now()).getStandardSeconds())
> 10;
}
})
.doOnNext(new Action1<Void>() {
@Override
public void call(Void aVoid) {
lastCancelDate[0] = null;
}
})
.subscribe(new Action1<Void>() {
@Override
public void call(Void aVoid) {
Log.d("ACTIONII", "Got Action");
}
});
Это работает, но должен быть лучший способ.
Спасибо за ваши усилия. клик actionButton не должен испускать значение **, если cancelButton strem ВЫИГРЫВАЕТ значение в NEXT 10 секунд ** – tchelidze
Обновил мой ответ соответственно –