Следите за новинками
в нашем Telegram канале. Жми, чтобы подписаться:)
⊗ktSpCrSp 156 of 299 menu
◀ ▶

Приостанавливаемая функция в Kotlin

Не каждую функцию можно прервать на паузу: компилятор разрешает приостановку только там, где стоит модификатор suspend. Такая функция вызывается либо из другой suspend-функции, либо из блока, который уже открыл корутинный контекст, например внутри runBlocking.

Собственный шаг оформляют как suspend fun. Внутри допустимы обычные выражения и вызовы других приостанавливаемых функций, в том числе delay:

import kotlinx.coroutines.delay suspend fun report(label: String) { println(label) delay(10) }

Снаружи report напрямую из main вызвать нельзя - нужен корутинный контекст. Блок runBlocking его предоставляет:

import kotlinx.coroutines.delay import kotlinx.coroutines.runBlocking suspend fun report(label: String) { println(label) delay(10) } fun main() { runBlocking { report("alpha") report("beta") } }

Цепочку из нескольких suspend-функций удобно собирать слоями: одна готовит данные, другая печатает итог, обе вызываются из одного блока:

import kotlinx.coroutines.runBlocking suspend fun loadCode(): String = "K-42" suspend fun showCode() { val code = loadCode() println(code) } fun main() { runBlocking { showCode() } }

Объявите suspend-функцию, которая печатает строку "ping". Запустите её два раза подряд внутри runBlocking.

Сделайте suspend-функцию, возвращающую число 7, и вторую, которая выводит результат первой. Вызовите вторую из runBlocking.

← →
↑
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить