У меня проблемы с поиском примера того, как создать собственный оператор с помощью RxJava 2. Я рассмотрел несколько подходов:
- Использование
Observable.create
, а затемflatMap
ing на нем из наблюдаемого источника. Я могу заставить это работать, но это не совсем правильно. В итоге я создаю статическую функцию, которую предоставляю источникомObservable
, а затем - flatMap для источника. Затем в OnSubscribe я создаю экземпляр объекта, которому передаю эмиттер, который обрабатывает и управляет Observable / Emitter (поскольку это нетривиально, и я хочу, чтобы все было как можно более инкапсулировано). - Создание
ObservableOperator
и передача егоObservable.lift
. Я не могу найти никаких примеров этого для RxJava 2. Мне пришлось отлаживать свой собственный пример, чтобы убедиться, что мое понимание восходящего и нисходящего потоков было правильным. Поскольку я не могу найти никаких примеров или документации по этому поводу для RxJava 2, я немного беспокоюсь, что могу случайно сделать что-то, чего я не должен. - Создайте свой собственный
Observable
тип. Похоже, именно так работают базовые операторы, многие из которых расширяютAbstractObservableWithUpstream
. Однако здесь много всего происходит, и кажется, что легко что-то упустить или сделать то, чего я не должен. Я не уверен, должен ли я придерживаться такого подхода или нет. Я прошел через мысленный процесс, и кажется, что он может довольно быстро стать волосатым.
Я собираюсь перейти к варианту №2, но подумал, что имеет смысл спросить, какой поддерживаемый метод для этого был в RxJava2, а также выяснить, есть ли для этого документация или примеры.
RxAssembly
,DisposableHelper
, и они используются точно. Это определенно можно было бы сделать, но я бы просто скопировал формат. Я хотел бы убедиться, что понимаю, что происходит в моем коде. - person spierce7   schedule 25.01.2017