Версии оператора buffer
, которые не работают по времени, учитывают противодавление согласно JavaDoc:
http://reactivex.io/RxJava/2.x/javadoc/io/reactivex/Flowable.html#buffer-int-
Однако, любая версия buffer
, которая использует временные буферы, не поддерживает противодавление, как эта
http://reactivex.io/RxJava/2.x/javadoc/io/reactivex/Flowable.html#buffer-long-java.util.concurrent.TimeUnit-int-
Я понимаю, что это происходит из-за того, что, когда время идет, вы не можете остановить его аналогично, например, оператору interval
, который также не поддерживает противодавление по той же причине.
Что мне нужно, так это оператор буферизации, основанный как на размере, так и на времени, и полностью поддерживающий противодавление, передавая сигналы противодавления ОБА вверх по течению И производителю, тикающему время, что-то вроде этого:
someFlowable()
.buffer(
Flowable.interval(1, SECONDS).onBackpressureDrop(),
10
);
Так что теперь я могу снять галочку на сигналах противодавления.
Это что-то достижимое в настоящее время в rxJava2? Как насчет Project-Reactor?