fun startAsyncFunc() {
launch {
asyncFunc1()
asyncFunc2()
}
}
fun asyncFunc1() { ... }
suspend fun asyncFunc2() { ... }
suspend
なしで作業を終了でき、テストも簡単になります(runBlocking
を追加せずにテストできます。
私の質問:
asyncFunc1
vs asyncFunc2
、どちらが優れているのか、そしてその理由は?asyncFunc2
の方が優れている場合、コルーチンで関数を実行するときは常にsuspend
を使用する必要がありますか?Kotlin Coroutinesの最近のリリースでは、メソッドにコルーチンコード(launch
、async
など)が含まれていない場合、コンパイラーがThis inspection reports a suspend modifier as redundant if no other suspend functions are called inside
と文句を言います。したがって、suspend
は必須の場合にのみ使用する必要があると思います。
docs から:
一時停止関数は、通常の関数と同じようにコルーチン内で使用できますが、追加の機能として、この例の遅延などの他の一時停止関数を使用して、コルーチンの実行を一時停止できます。
次の場合にsuspendキーワードを使用します。
何らかの方法で遅延する関数(いくつかの計算、ネットワーク要求を待機中)
経験則では、強制されない限り、機能の一時停止をマークしないでください。