Size: a a a

Kotlin Community

2020 February 02

BP

Bogdan Panchenko in Kotlin Community
с комбинацией асинка*
источник

K

Kopusha in Kotlin Community
да, результат. Ну вот я думал флоу и в его генераторе будет async. Надо запустить все сразу и эмитить по мере успешности выполнения
источник

BP

Bogdan Panchenko in Kotlin Community
я с флов не работал, но вот с каналами:  вызывается асинк, в нем он сендить в канал
источник

BV

Boris Vanin in Kotlin Community
Kopusha
да, результат. Ну вот я думал флоу и в его генераторе будет async. Надо запустить все сразу и эмитить по мере успешности выполнения
select-ом
источник

BV

Boris Vanin in Kotlin Community
Если запустить кучу асинков, то получать по мере выполнения можно select-ом
источник

BV

Boris Vanin in Kotlin Community
Select Expression (experimental) - Kotlin Programming Language
https://kotlinlang.org/docs/reference/coroutines/select-expression.html
источник
2020 February 03

K

Kopusha in Kotlin Community
хм, интересно, что так работает
select<String> {
           deferred.onAwait{it}
       }
но если пропустить {it}, то нет. Хотя компилится
источник

K

Kopusha in Kotlin Community
посмотрел еще на примеры select, все-таки как отдавать результаты по одному (или еще проще, все сразу, в порядке выполнения)? Вот есть List<Deferred>, select же выберет первый и остановится? Т.е. все-таки нужен канал?
источник

BV

Boris Vanin in Kotlin Community
Kopusha
посмотрел еще на примеры select, все-таки как отдавать результаты по одному (или еще проще, все сразу, в порядке выполнения)? Вот есть List<Deferred>, select же выберет первый и остановится? Т.е. все-таки нужен канал?
Ну а если например в цикле?
источник

K

Kopusha in Kotlin Community
а условие выхода?
источник

AM

Andrew Mikhaylov in Kotlin Community
А зачем цикл с List<Deferred>, если есть канал?
Нет, это, конечно, семантически разные штуки, и канал не гарантирует, что результат каждой операции, успешный или нет, будет получен...
источник

K

Kopusha in Kotlin Community
мне интересно что будет идиоматически верным решением. Например, на вход список url картинок, на выход либо список картинок в порядке получения, либо как вариант их стрим.

говорите канал самое то?
источник

AM

Andrew Mikhaylov in Kotlin Community
Ну да, у Романа Елизарова в нескольких докладах как раз загрузка ресурсов как пример рассматривается, там всё довольно стройно на каналах делается.
источник

BV

Boris Vanin in Kotlin Community
Andrew Mikhaylov
Ну да, у Романа Елизарова в нескольких докладах как раз загрузка ресурсов как пример рассматривается, там всё довольно стройно на каналах делается.
Так эта, в канал же надо ещё класть
источник

AM

Andrew Mikhaylov in Kotlin Community
Ну само собой, корутина, которая результаты предоставляет, будет класть их в канал вместо возврата.
источник

BV

Boris Vanin in Kotlin Community
Andrew Mikhaylov
Ну само собой, корутина, которая результаты предоставляет, будет класть их в канал вместо возврата.
Тогда получается, что канал не решает никакой проблемы 🤷‍♂
источник

BV

Boris Vanin in Kotlin Community
В данном случае
источник

V

Vladimir in Kotlin Community
Условие выхода - list.notEmpty, в onAwait - отправлять в канал и удалять из списка.
Или бред какой то?
источник

QQ

Qqq Qqq in Kotlin Community
Vladimir
Условие выхода - list.notEmpty, в onAwait - отправлять в канал и удалять из списка.
Или бред какой то?
repeat(list.size) select {}
источник

V

Vladimir in Kotlin Community
Qqq Qqq
repeat(list.size) select {}
Или даже так )
источник