Size: a a a

Kotlin Community

2020 June 11

AM

Andrew Mikhaylov in Kotlin Community
Lev Shagalov
callbackFlow
Creates an instance of the cold Flow with elements that are sent to a SendChannel provided to the builder’s block of code via ProducerScope.

Так а как бросить в этот Flow события, прилетевшие извне?
https://github.com/Kotlin/kotlinx.coroutines/blob/d7de5f5ba66a8d005e5cbd03b18522112303fd54/reactive/kotlinx-coroutines-rx2/src/RxConvert.kt#L93
Например, вот так. У вас есть какой-то API, построенный на коллбеках. Вот вы создаёте коллбек, задача которого — вызвать sendBlocking на ресивере лямбда-параметра callbackFlow, засовываете этот коллбек в вашу API, и дожидаетесь с помощью awaitClose завершения операции / подписки.
источник

AM

Andrew Mikhaylov in Kotlin Community
Если вам просто снаружи нужно во флоу каким-то образом совать данные в произвольные моменты времени — заводите канал, получайте с него .consumeAsFlow(), в канал пишете, флоу отдаёте наружу на чтение.
источник

AN

Alexander Nozik in Kotlin Community
Andrew Mikhaylov
Если вам просто снаружи нужно во флоу каким-то образом совать данные в произвольные моменты времени — заводите канал, получайте с него .consumeAsFlow(), в канал пишете, флоу отдаёте наружу на чтение.
Вот собственно для этого завезли StateFlow
источник

D

Denys in Kotlin Community
источник

AN

Alexander Nozik in Kotlin Community
Он реально с такой скоростью кликает или это монтаж?
источник

D

Denys in Kotlin Community
Alexander Nozik
Он реально с такой скоростью кликает или это монтаж?
Думаю, ускорено немного, судя по времени мигания курсора.
источник

AN

Alexander Nozik in Kotlin Community
Denys
Думаю, ускорено немного, судя по времени мигания курсора.
Угу, я уж думал, что открыл секрет competitive programming.
источник

D

Denys in Kotlin Community
Alexander Nozik
Угу, я уж думал, что открыл секрет competitive programming.
Быстрый набор им тоже важен. :)
источник

AM

Andrew Mikhaylov in Kotlin Community
Какой забавный у молодого человека рандом :)
источник

IO

Iaroslav Orlov in Kotlin Community
Alexander Nozik
Угу, я уж думал, что открыл секрет competitive programming.
полагаю, что довольно мало олимпиад по программированию было проиграно из-за скорости набора
источник

LS

Lev Shagalov in Kotlin Community
Alexander Nozik
Вот собственно для этого завезли StateFlow
Так StateFlow это ж только одно значение.

Что то мне кажется, что Flow тут просто не нужен. Мне надо обычный канал и брать, только брать из него сообщения сразу все. Наверно так можно сделать
источник

AM

Andrew Mikhaylov in Kotlin Community
Lev Shagalov
Так StateFlow это ж только одно значение.

Что то мне кажется, что Flow тут просто не нужен. Мне надо обычный канал и брать, только брать из него сообщения сразу все. Наверно так можно сделать
Там кроме StateFlow на подходе более обобщённый SharedFlow.
источник

AM

Andrew Mikhaylov in Kotlin Community
Просто канал семантически -- это скорее примитив синхронизации корутин, чем поток данных.
источник

LS

Lev Shagalov in Kotlin Community
Andrew Mikhaylov
Просто канал семантически -- это скорее примитив синхронизации корутин, чем поток данных.
Ну, тогда можно channel.consumeAsFlow, не тогда сильно и просто channel. Или через флоу потребление должно быть удобней?
источник

LS

Lev Shagalov in Kotlin Community
Зачем канал потреблять как флоу? В чем выгода?
источник

DT

Dmitrii Tukhvatullin in Kotlin Community
Lev Shagalov
Зачем канал потреблять как флоу? В чем выгода?
У flow есть debounce и прочие, у канала нет
источник

КР

Кирилл Романенко... in Kotlin Community
Lev Shagalov
Зачем канал потреблять как флоу? В чем выгода?
Все экстеншены на каналах задерпрекейтили, т.к. они hot. До того как вышел flow, экстеншены на каналах отстреливали ноги.
источник

КР

Кирилл Романенко... in Kotlin Community
Я писал на них реактивное апи, было больно.
источник
2020 June 12

MT

Mikhail T in Kotlin Community
Ребята, нужна подсказка:
Пытаюсь в джава проекте с рест апи использовать котлин код, т.е. контроллеры, методы и тд на котлине.
Но пришел в ступор, когда начал отлаливать экксепшны методов на котлине. Например в джава есть класс ResponseEntityExceptionHandler, который мы расширяем и пишем свои реализации обработки ошибок.

Пытаюсь делать то же самое на котлине, пишу ControllerAdvice класс, который должен отлавлвливать все эксепшны, не работает.

то есть если в котлин рест метод отправлю какой либо невалидный объект - вернет просто 400, без пояснения и отловить этот эксепшн не получается.

Но когда удаляю хандлер на джава - котлин хандлер начинает работать.

Можете пояснить в чем проблема?
источник

QH

Quantum Harmonizer in Kotlin Community
Mikhail T
Ребята, нужна подсказка:
Пытаюсь в джава проекте с рест апи использовать котлин код, т.е. контроллеры, методы и тд на котлине.
Но пришел в ступор, когда начал отлаливать экксепшны методов на котлине. Например в джава есть класс ResponseEntityExceptionHandler, который мы расширяем и пишем свои реализации обработки ошибок.

Пытаюсь делать то же самое на котлине, пишу ControllerAdvice класс, который должен отлавлвливать все эксепшны, не работает.

то есть если в котлин рест метод отправлю какой либо невалидный объект - вернет просто 400, без пояснения и отловить этот эксепшн не получается.

Но когда удаляю хандлер на джава - котлин хандлер начинает работать.

Можете пояснить в чем проблема?
AspectJ же наследует твои классы? Надо open сделать?
источник