RxSwift как Actions для Android

Впервые я познакомился с реактивным программированием с помощью ReactiveCocoa несколько лет назад. Там у них было понятие RACCommands, которое было перенесено в RxSwift с библиотекой расширений Действие.

Как указано на их странице GitHub:

Действие — это способ сказать «привет», позже мне нужно, чтобы вы подписались на эту штуку.

Действия принимают workFactory: замыкание, которое принимает некоторый ввод и производит наблюдаемое. Когда вызывается execute(), он передает свой параметр этому замыканию и подписывается на работу.

  • Может выполняться только при включении (true, если не указано).
  • Выполняйте только одно дело за раз.
  • Объединяет события next/error для отдельных выполнений.

По моему опыту, это абсолютно незаменимый инструмент в наборе инструментов реактивного программирования при надежной реактивной разработке iOS.


Теперь мы хотели бы перенести это и в приложение Android. Но после бесчисленных часов исследований мне не удалось найти соответствующий компонент ни для RxJava, ни для RxKotlin.

Реализация в Swift относительно проста, поэтому мы могли просто портировать ее, но сначала хотелось бы услышать, если:

  1. Этого на самом деле не существует, и если так
  2. Есть ли конкретная причина для Android, по которой этого не существует, то есть причина не для его переноса?

person Zappel    schedule 28.02.2018    source источник
comment
Я не совсем понимаю связанные библиотеки (я не разработчик iOS/Swift), но это чем-то напоминает RxJavaComputationExpressions (в версии 2) или собственный AsyncTask Android. Я бы предложил переосмыслить то, чего вы хотите достичь, и использовать простые конструкции RxJava.   -  person akarnokd    schedule 28.02.2018
comment
Ближайшая вещь github.com/ReactiveX/RxAndroid   -  person Nongthonbam Tonthoi    schedule 28.02.2018
comment
Вы думаете о Java Callable? Вы включаете некоторую работу, которую нужно выполнить, в метод call, и вы можете отправить ее в Executor, чтобы получить Future, или превратить ее в Observable с Observable.fromCallable().   -  person David Rawson    schedule 03.03.2018


Ответы (1)


В итоге мы сами портировали версию для iOS.

Это открытый исходный код, и его можно найти здесь: https://github.com/tonsser/kaction

person Zappel    schedule 13.04.2018