0Pricing
Dart Academy · レッスン

Future.waitと並列処理

複数のFutureを同時に実行する

「Future.waitと並列処理」はCoddyKit上の無料Dart Academyレッスンです。 これはレッスン4/4です。 下記で完全なレッスンを無料で読むことができます。その後、ブラウザ内の組み込みコードエディタと24時間対応のAIチューターでハンズオン演習できます。 これはDart Academy学習パスの一部であり、ウェブとCoddyKitアプリ全体で進捗が同期されます。 Dart Academyコースには全4レッスンが含まれています。

1つずつawaitすると遅い

Futureを順番にawaitすると、前の処理が終わるまで次が待機します。1秒かかる呼び出しを3回行うと、合計で3秒かかります。

まとめて開始する

独立した非同期呼び出しを先に開始し、その後でawaitします。処理は同時並行で進むため、合計時間は合計ではなく、最も遅い処理に左右されます。

Future.waitを使う

Future.waitはFutureのリストを受け取り、すべての処理が完了したときに完了する1つのFutureを返します。

final results = await Future.wait([a(), b(), c()]);

結果の順序は維持される

Future.waitは、どのFutureが先に完了したかに関係なく、入力されたFutureと同じ順序の結果のリストを返します。

final list = await Future.wait([one(), two()]);
print(list[0]); // result of one()

実際の時間短縮

1秒かかるFutureを3つ並行して実行すると、Future.waitが待機時間を重ね合わせるため、約1秒で同時に完了します。

1つが失敗した場合

デフォルトでは、いずれかのFutureでエラーが発生すると、ほかの処理が実行中でもFuture.waitは直ちにそのエラーで完了します。

eagerErrorで処理を続ける

eagerError: falseを渡すと、Future.waitはすべてのFutureが完了するまで待ってから、最初に発生したエラーを報告します。

await Future.wait(tasks, eagerError: false);

Future.anyで競争させる

最も速い結果だけが必要ですか?Future.anyは、リスト内で最初に成功したFutureが完了すると、すぐに完了します。

final fastest = await Future.any([mirrorA(), mirrorB()]);

リストを作成する

よく使うパターンは、入力値に対してmapを使ってFutureのリストを作成し、そのままFuture.waitに渡す方法です。

await Future.wait(ids.map(fetchUser));

並行処理であり、並列スレッドではない

これは1つのisolate上での並行処理です。イベントループが待機中の処理を交互に進めます。CPU負荷の高い処理にはisolateを使います。

使い分ける方法

すべての結果が必要な場合はFuture.waitを使い、最初に届いた結果だけが必要な場合はFuture.anyを使います。⚖️

クイックチェック

Futureをまとめて実行する方法を確認しましょう。

まとめ:並行Future

すべての結果にはFuture.wait、最速の結果にはFuture.anyを使って非同期処理を重ねる方法と、エラーの動作を学びました。🏁

よくある質問

「Future.waitと並列処理」レッスンは無料ですか?

はい。「Future.waitと並列処理」の完全なテキストはこのウェブで無料で読めます。インタラクティブに演習し(組み込みコードエディタと24時間対応のAIチューター)、Dart Academyコースの残りをアンロックするには、CoddyKit PROにアップグレードしてください。 Dart Academyコースには全4レッスンが含まれています。

「Future.waitと並列処理」で何を学びますか?

複数のFutureを同時に実行する ブラウザで直接実行するハンズオンコードでDart Academyを演習し、24時間対応のAIチューターがレッスンを進める中での質問に答えます。

Dart Academyを始めるのに経験は必要ですか?

事前経験は必要ありません。CoddyKitのDart Academyは初級者から上級者向けに構成されているため、ここから始めるか最初から始めて、自分のペースで進むことができます。 これはレッスン4/4です。

「Future.waitと並列処理」レッスンにはどのくらい時間がかかりますか?

ほとんどのCoddyKitレッスンは約5~10分かかります。各レッスンはコンパクトでインタラクティブなので、着実に進歩し、ウェブとアプリ全体で正確に前回の場所から再開できます。

このDart Academyレッスンでコードを書いて実行できますか?

はい。すべてのDart Academyレッスンに組み込みコードエディタが含まれているため、ブラウザでリアルコードを書いて実行し、即座のAIフィードバックを取得できます。ローカル設定は不要です。

このコースのすべてのレッスン

  1. イベントループとマイクロタスク
  2. Futureの作成とawait
  3. asyncコードのエラーハンドリング
  4. Future.waitと並列処理
← Dart Academyに戻る