Comments 13
В kotlinx.coroutines 1.2.0 планируют включить поддержку холодных стримов.
Issue на GitHub. Документация. Статья.
Здравствуйте! Flows основаны на корутинах, и пока не очень понятно, как это всё можно использовать в проде — реальный опыт мало у кого есть, насколько мне известно. Если кто-то знает успешные примеры — поделитесь, пожалуйста. У нас же давно возникла потребность делать Reaktive, еще до того, как появились какие-то слухи о Flows. Мы не стали менять традиции, в Reaktive есть стандартные наборы источников и планировщиков. Планировщики кстати тоже можно заменять на моки в тестах.
С корутинами в проде все хорошо. Flow
только-только появился и вообще еще в альфе, так что его действительно в проде не найдешь, впрочем, это относится и к Reaktive
.
Никак не хочу преуменьшить качество и полезность Reaktive
, просто привел реальную альтернативу, т.к. в статье упомянули только обертку над RxJava
скачал badoo/Reaktive и не нашел тестов и примерных приложений для десктопной явы. И даже в документации нет примеров. А так хотелось поиграться. С чего начать?
а чем Project Reactor не устроил?
Здравствуйте! Project Reactor — это очень хороший проект. Но он нас не устраивает тем же, чем и RxJava — это Java-библиотека. У них было желание сделать её мультиплатформенной, но обсуждение недавно закрыли в пользу Kotlin Coroutines Flow.
Здравствуйте, а вы думали/используете ли как-то корутины под капотом? В том же дарте например местный rx тесто интегрирован с местными корутинами, что и зачастую удобнее с точки зрения кода (можно дождаться например какой-нить future внутри map функции, и для этого не нужны особые функции комбинаторы для разных вещей) и лучше с точки зрения перфоманса…
Здравствуйте! Как уже было упомянуто выше в комментариях, мы думали о корутинах. Но не используем. Причина в том, что на момент начала работы над Reaktive не было до конца понятно, как с их помощью можно реализовать холодные стримы. Недавно появилось превью Flows, но и по ним тоже есть вопросы. Классический подход на данный момент выглядит более привлекательным и надёжным.
Привет! Спасибо, что продвигаете kotlin и rx, я прям стал фанатом!
По статье, кажется, есть пара опечаток в примерах про nullable-типы в Reaktive. Поправьте меня пожалуйста, если ошибаюсь.
Например тут (явно две строчки идентичны):
и тут (кажется для o2 тип должен быть String):
По статье, кажется, есть пара опечаток в примерах про nullable-типы в Reaktive. Поправьте меня пожалуйста, если ошибаюсь.
Например тут (явно две строчки идентичны):
val o3: Observable<String?> = merge(o1, o2) // ошибки нет
val o4: Observable<String?> = merge(o1, o2) // ошибка компиляции, несоответствие типов
и тут (кажется для o2 тип должен быть String):
val o1: Observable<String?> = observableOf(null)
val o2: Observable<String?> = o1 // ошибка компиляции, несоответствие типов
val o1: Observable<String?> = observableOf(null)
val o2: Observable<String?> = o1.notNull() // ошибки нет, значения null отфильтрованы
Sign up to leave a comment.
Reaktive — мультиплатформенная библиотека для реактивного Kotlin