Size: a a a

Kotlin Community

2020 February 11

АО

Алексей Овсянников in Kotlin Community
там весьма годная документация на ktor.io
источник

AA

Anton Arhipov in Kotlin Community
Radmir
Всем привет
Курсы по ktor не подкините?
источник

SZ

Sergey Zolotov in Kotlin Community
о клево, спасибо
источник

R

Radmir in Kotlin Community
Спасибо
источник

A

Alexander in Kotlin Community
всем привет, не могу понять 1 момент
у мя в скоупе вызывется суспенд функция
как не создавая другой скоуп я могу запустить эту функцию на выполнение и не ожидая результата продолжить выполнение текущей функции?

заранее спасибо☺️
источник

AM

Andrew Mikhaylov in Kotlin Community
launch ровно это и делает, нет?
источник

A

Alexander in Kotlin Community
вроде как.. но что-то на практике не понятно получается ;D
сек, ща кое что протещу
источник

A

Alexander in Kotlin Community
вероятно я где-то туплю, но просто
launch { 
в суспенд функции написать нельзя, поэтому я написал
withContext(coroutineScope){ launch { 
...
источник

D

Danil Yudov in Kotlin Community
Alexander
вероятно я где-то туплю, но просто
launch { 
в суспенд функции написать нельзя, поэтому я написал
withContext(coroutineScope){ launch { 
...
можно сократить до
coroutineScope.launch {
источник

AM

Andrew Mikhaylov in Kotlin Community
Скорее
coroutineScope {
   ...
   launch {
       ...
   }
   ...
}
источник

A

Alexander in Kotlin Community
ой сорь, там coroutineContext
скоуп с функции не видент тип
источник

A

Alexander in Kotlin Community
Andrew Mikhaylov
Скорее
coroutineScope {
   ...
   launch {
       ...
   }
   ...
}
а это ж создаст левый скоуп, нет?
источник

AM

Andrew Mikhaylov in Kotlin Community
Да, но саспенд-функция должна по конвенции вернуть только тогда, когда вся работа выполнена.
источник

AM

Andrew Mikhaylov in Kotlin Community
И нарушать это логично только там, где, к примеру, надо запланировать долгоиграющую задачу, или задачу на потом, но это обычно как раз не из саспенд-функций делается, а из функций-экстеншнов на скоупе
источник

AM

Andrew Mikhaylov in Kotlin Community
С этими конвенциями проще разгребать код впоследствии
источник

A

Alexander in Kotlin Community
я пытаюсь сканить bluetooth девайсы, и хочу запустить сканирование на определённое время, а вернуть канал в который будут приходить результаты
потом сразу же в течении этого же времени смотрю результаты, после вызова скана

как это правильно сделать то? )
источник

AM

Andrew Mikhaylov in Kotlin Community
В нечастых случаях, когда мне внешний скоуп для запуска на нём задач нужен в саспенд-функции, я его туда параметром явно передаю.
источник

A

Alexander in Kotlin Community
так да, работает.. но что-то мне такое решение не особо нравится ;D
может лучше отдельный скоуп заводить в классе где работа выполняется, и его там и мэнэджить
источник

A

Alexander in Kotlin Community
в любом случае спасибо за помощь☺️
источник

AM

Andrew Mikhaylov in Kotlin Community
Тоже хороший способ. Главное — не забыть в нужное время скоуп грохнуть, если у держащего его класса нет строгого лайфсайкла :)
источник