Впервые я познакомился с реактивным программированием с помощью ReactiveCocoa несколько лет назад. Там у них было понятие RACCommand
s, которое было перенесено в RxSwift с библиотекой расширений Действие.
Как указано на их странице GitHub:
Действие — это способ сказать «привет», позже мне нужно, чтобы вы подписались на эту штуку.
Действия принимают
workFactory
: замыкание, которое принимает некоторый ввод и производит наблюдаемое. Когда вызываетсяexecute()
, он передает свой параметр этому замыканию и подписывается на работу.
- Может выполняться только при включении (true, если не указано).
- Выполняйте только одно дело за раз.
- Объединяет события next/error для отдельных выполнений.
По моему опыту, это абсолютно незаменимый инструмент в наборе инструментов реактивного программирования при надежной реактивной разработке iOS.
Теперь мы хотели бы перенести это и в приложение Android. Но после бесчисленных часов исследований мне не удалось найти соответствующий компонент ни для RxJava, ни для RxKotlin.
Реализация в Swift относительно проста, поэтому мы могли просто портировать ее, но сначала хотелось бы услышать, если:
- Этого на самом деле не существует, и если так
- Есть ли конкретная причина для Android, по которой этого не существует, то есть причина не для его переноса?
AsyncTask
Android. Я бы предложил переосмыслить то, чего вы хотите достичь, и использовать простые конструкции RxJava. - person akarnokd   schedule 28.02.2018Callable
? Вы включаете некоторую работу, которую нужно выполнить, в методcall
, и вы можете отправить ее вExecutor
, чтобы получитьFuture
, или превратить ее в Observable сObservable.fromCallable()
. - person David Rawson   schedule 03.03.2018