Package kotlin.coroutines

Basic primitives for creating and suspending coroutines: Continuation, CoroutineContext interfaces, coroutine creation and suspension top-level functions.

Types

Common
JVM
JS
Native
1.3

AbstractCoroutineContextElement

Base class for CoroutineContext.Element implementations.

abstract class AbstractCoroutineContextElement : Element
Common
JVM
JS
Native
1.3

Continuation

Interface representing a continuation after a suspension point that returns a value of type T.

interface Continuation<in T>
Common
JVM
JS
Native
1.3

ContinuationInterceptor

Marks coroutine context element that intercepts coroutine continuations. The coroutines framework uses ContinuationInterceptor.Key to retrieve the interceptor and intercepts all coroutine continuations with interceptContinuation invocations.

interface ContinuationInterceptor : Element
Common
JVM
JS
Native
1.3

CoroutineContext

Persistent context for the coroutine. It is an indexed set of Element instances. An indexed set is a mix between a set and a map. Every element in this set has a unique Key.

interface CoroutineContext
Common
JVM
JS
Native
1.3

EmptyCoroutineContext

An empty coroutine context.

object EmptyCoroutineContext : CoroutineContext, Serializable
Native
1.3

SuspendFunction

Represents a value of a functional type, such as a lambda, an anonymous function or a function reference.

interface SuspendFunction<out R>

Annotations

Common
JVM
JS
Native
1.3

RestrictsSuspension

Classes and interfaces marked with this annotation are restricted when used as receivers for extension suspend functions. These suspend extensions can only invoke other member or extension suspend functions on this particular receiver and are restricted from calling arbitrary suspension functions.

annotation class RestrictsSuspension

Properties

Common
JVM
JS
Native
1.3

coroutineContext

Returns the context of the current coroutine.

suspend val coroutineContext: CoroutineContext

Functions

Common
JVM
JS
Native
1.3

Continuation

Creates a Continuation instance with the given context and implementation of resumeWith method.

fun <T> Continuation(
    context: CoroutineContext,
    resumeWith: (Result<T>) -> Unit
): Continuation<T>
Common
JVM
JS
Native
1.3

createCoroutine

Creates a coroutine without a receiver and with result type T. This function creates a new, fresh instance of suspendable computation every time it is invoked.

fun <T> (suspend () -> T).createCoroutine(
    completion: Continuation<T>
): Continuation<Unit>

Creates a coroutine with receiver type R and result type T. This function creates a new, fresh instance of suspendable computation every time it is invoked.

fun <R, T> (suspend R.() -> T).createCoroutine(
    receiver: R,
    completion: Continuation<T>
): Continuation<Unit>
Common
JVM
JS
Native
1.3

resume

Resumes the execution of the corresponding coroutine passing value as the return value of the last suspension point.

fun <T> Continuation<T>.resume(value: T)
Common
JVM
JS
Native
1.3

resumeWithException

Resumes the execution of the corresponding coroutine so that the exception is re-thrown right after the last suspension point.

fun <T> Continuation<T>.resumeWithException(
    exception: Throwable)
Common
JVM
JS
Native
1.3

startCoroutine

Starts a coroutine without a receiver and with result type T. This function creates and starts a new, fresh instance of suspendable computation every time it is invoked. The completion continuation is invoked when the coroutine completes with a result or an exception.

fun <T> (suspend () -> T).startCoroutine(
    completion: Continuation<T>)

Starts a coroutine with receiver type R and result type T. This function creates and starts a new, fresh instance of suspendable computation every time it is invoked. The completion continuation is invoked when the coroutine completes with a result or an exception.

fun <R, T> (suspend R.() -> T).startCoroutine(
    receiver: R,
    completion: Continuation<T>)
Common
JVM
JS
Native
1.3

suspendCoroutine

Obtains the current continuation instance inside suspend functions and suspends the currently running coroutine.

suspend fun <T> suspendCoroutine(
    block: (Continuation<T>) -> Unit
): T