scope.launch { // このブロックは、スコープ「内」で // 新規コルーチンを開始します。 // // コルーチンは中断関数を呼び出すことができます。 fetchDocs() }
class MyViewModel(): ViewModel() { fun userNeedsDocs() { // ViewModel 内で新しいコルーチンを開始 viewModelScope.launch { fetchDocs() } } }
fun runForever() { // ViewModel 内で新しいコルーチンを開始 viewModelScope.launch { // ViewModel がクリアされるとキャンセルされる while(true) { delay(1_000) // 毎秒、なんらかの処理を実行 } } }
suspend fun fetchTwoDocs() { coroutineScope { launch { fetchDoc(1) } async { fetchDoc(2) } } }
val unrelatedScope = MainScope() // エラーが失われる例 suspend fun lostError() { // 構造化された並行性を持たない async unrelatedScope.async { throw InAsyncNoOneCanHearYou("except") } }
suspend fun foundError() { coroutineScope { async { throw StructuredConcurrencyWill("throw") } } }