У меня есть Flowable (холодный), к которому мне нужно применить следующий оператор:
- Пройдите по элементам потока по порядку, пока не будет выполнено условие A. Кэшируйте элемент, соответствующий этому условию.
- Перейдите к следующему элементу, но теперь проверьте условие B. Если найден элемент, соответствующий этому условию
- Применение функции, которая принимает оба ранее собранных элемента и создает новый элемент во втором потоке.
- Продолжайте до тех пор, пока не останется элементов, которые вначале удовлетворяют условию A, и элемента, который соответствует условию B. Удалите все кэшированные элементы.
Обратите внимание, что после излучения следующий элемент, который проверяется на A, должен быть таким же, который только что выполнил условие B, поскольку элемент может удовлетворять обоим условиям.
Я не могу придумать, как это сделать с помощью RxJava. Моими первыми инстинктами были takeUntil () и / или skipUntil (), но оба применяются только один раз. И у меня пока недостаточно опыта реактивного программирования, чтобы написать собственный оператор.
Любые мысли и указания приветствуются!