ライブラリでは、( を使用) または( を使用)kotlinx.coroutines
のいずれかを使用して新しいコルーチンを開始できます。 これらの違いは何ですか?launch
join
async
await
ベストアンサー1
launch
は、コルーチンを起動して忘れるために使用されます。これは、新しいスレッドを開始するようなものです。 内のコードが例外で終了した場合、スレッド内のキャッチされていないlaunch
例外のように扱われます。通常、バックエンド JVM アプリケーションの stderr に出力され、Android アプリケーションがクラッシュします。 は、起動されたコルーチンの完了を待機するために使用され、例外は伝播しません。ただし、クラッシュした子コルーチンは、対応する例外で親もキャンセルします。join
async
は、何らかの result を計算するコルーチンを開始するために使用されます。結果は のインスタンスによって表されDeferred
、それに対してを使用する必要がありますawait
。コード内のキャッチされない例外は、async
結果内に格納されDeferred
、他のどこにも配信されず、処理されない限り暗黙的に破棄されます。async で開始したコルーチンを忘れてはなりません。