Является ли asyn c ключевым словом сопрограмм в Kotlin? - PullRequest
1 голос
/ 15 марта 2020

Я изучаю Coroutines в Kotlin.

Текст A из глав

Код A из глав , похоже, что async является ключевым словом.

Слово async вызывает у меня недоумение, является ли async ключевым словом сопрограмм или нет?

Текст A

В отличие от многих других языков с похожими возможностями, asyn c и await не являются ключевыми словами в Kotlin и даже не являются частью его стандартной библиотеки. Более того, концепция приостановки функции Kotlin обеспечивает более безопасную и менее подверженную ошибкам абстракцию для асинхронных операций, чем фьючерсы и обещания. kotlinx.coroutines - это богатая библиотека сопрограмм, разработанная JetBrains. Он содержит ряд высокоуровневых примитивов с поддержкой сопрограмм, которые рассматриваются в этом руководстве, включая запуск, asyn c и др.

Код A

val time = measureTimeMillis {
    val one = async { doSomethingUsefulOne() }
    val two = async { doSomethingUsefulTwo() }
    println("The answer is ${one.await() + two.await()}")
}
println("Completed in $time ms")

1 Ответ

2 голосов
/ 15 марта 2020

Единственное ключевое слово для сопрограмм в Kotlin - suspend. Все остальное реализовано в виде функций из библиотеки сопрограмм.

В вашем примере async не является ключевым словом. Скорее это функция. Вы можете подтвердить это, увидев импорт в верхней части файла, или Ctrl + Click или Cmd + Click на async

...