runBlocking

actual fun <T> runBlocking(context: CoroutineContext, block: suspend CoroutineScope.() -> T): T

Runs a new coroutine and blocks the current thread interruptibly until its completion. This function should not be used from a coroutine. It is designed to bridge regular blocking code to libraries that are written in suspending style, to be used in main functions and in tests.

Parameters

context

the context of the coroutine. The default value is an event loop on the current thread.

block

the coroutine code.

actual fun <T> runBlocking(context: CoroutineContext, block: suspend CoroutineScope.() -> T): T

Runs a new coroutine and blocks the current thread interruptibly until its completion. This function should not be used from a coroutine. It is designed to bridge regular blocking code to libraries that are written in suspending style, to be used in main functions and in tests.

Parameters

context

the context of the coroutine. The default value is an event loop on the current thread.

block

the coroutine code.

expect fun <T> runBlocking(context: CoroutineContext = EmptyCoroutineContext, block: suspend CoroutineScope.() -> T): T

Runs a new coroutine and blocks the current thread interruptibly until its completion. This function should not be used from a coroutine. It is designed to bridge regular blocking code to libraries that are written in suspending style, to be used in main functions and in tests.

Parameters

context

the context of the coroutine. The default value is an event loop on the current thread.

block

the coroutine code.

actual fun <T> runBlocking(context: CoroutineContext, block: suspend CoroutineScope.() -> T): T

Runs a new coroutine and blocks the current thread interruptibly until its completion. This function should not be used from a coroutine. It is designed to bridge regular blocking code to libraries that are written in suspending style, to be used in main functions and in tests.

Parameters

context

the context of the coroutine. The default value is an event loop on the current thread.

block

the coroutine code.

actual fun <T> runBlocking(context: CoroutineContext, block: suspend CoroutineScope.() -> T): T

Runs a new coroutine. The JS family (js + wasmJs) is single-threaded and cannot block, so block is launched on GlobalScope and the (not-yet-completed) kotlinx.coroutines.Deferred is returned cast to T — i.e. this does not actually block. Suitable only for fire-and-forget bridging such as com.splendo.kaluga.base.state.KalugaState.peekState; to drive suspending tests use the TestResult-returning runner in test-utils-base instead.

Parameters

context

the context of the coroutine. The default value is an event loop on the current thread.

block

the coroutine code.