Dart Academy · レッスン

await forでリッスンする

イベントを到着した順に読み取る

レッスン 1/413 ステップ

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

Streamとは

Streamは、すべてが一度に届くのではなく、時間の経過とともに届く値の列です。1つだけでなく、複数の結果を届けられるFutureのようなものだと考えてください。

StreamとFuture

Futureは、後から1つの値を返します。Streamは、終了したことを知らせるまで、イベントの連続を1つずつ渡します。🌊

await forに出会う

await forループは、到着したイベントをストリームから読み取ります。ループが1回進むたびに、ストリームが発行した次の値を受け取ります。

await for (final value in stream) {
  print(value);
}

asyncの中で使う必要があります

await forはイベントを待つために一時停止するので、asyncが付いた関数の中でのみ動作します。次の値を受け取れるようになるまで、関数は中断されます。

Future<void> show(Stream<int> s) async {
  await for (final n in s) print(n);
}

ListenするStream

Stream.fromIterableを使うと、簡単なストリームを作成できます。リストの各要素を順番に発行するため、await forを試すのにぴったりです。

final stream = Stream.fromIterable([1, 2, 3]);

イベントをループする

このストリームとawait forを組み合わせると、発行された値ごとにループが1回実行されます。ここでは1、2、3の順に出力します。

await for (final n in Stream.fromIterable([1, 2, 3])) {
  print(n);
}

イベント間で待機する

実際のストリームでは、イベントとイベントの間に待ち時間があることがよくあります。await forを使えば、コードはその間ただ待機し、次の値が届いた瞬間に再開します。⏳

final ticks = Stream.periodic(
    Duration(seconds: 1), (i) => i);

ループは自然に終了する

ストリームがイベントの送信を終えると、doneシグナルを送ります。await forループは自動的に終了し、関数はその後の処理を続けます。

await for (final n in finiteStream) print(n);
print('Stream finished');

エラーはループに届く

ストリームがerrorを発行すると、そのエラーはawait forの行で直接スローされます。ループをtry/catchで囲めば、適切に処理できます。

try {
  await for (final n in maybeFails) print(n);
} catch (e) {
  print('Caught: $e');
}

breakでListenをキャンセルする

await forの中でbreakを使うと、ループが停止し、ストリームへのサブスクリプションが静かにキャンセルされます。残りのイベントは受け取れなくなります。

await for (final n in stream) {
  if (n > 100) break;
}

一度に1つのListener

await forループは、single-subscription streamを購読します。このストリームは1回しか読み取れないため、同じストリームを2つ目のループで読み取るとエラーになります。

簡単な確認

await forについての理解度を確認しましょう。

まとめ

Streamは時間の経過とともに多くの値を届け、await forはasync関数の中で、doneになるまでそれらを1つずつ読み取ることを学びました。よくできました!🎉

無料で開始

AI チューターと学ぶ Dart — 無料

ブラウザでリアルコードを書いて実行し、24/7 の AI チューターから瞬時にサポートを受け、ウェブまたはアプリで続きから学習できます。

コース
30
レッスン
120

よくある質問

「await forでリッスンする」レッスンは無料ですか?

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

「await forでリッスンする」で何を学びますか?

イベントを到着した順に読み取る ブラウザで直接実行するハンズオンコードでDart Academyを演習し、24時間対応のAIチューターがレッスンを進める中での質問に答えます。

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

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

「await forでリッスンする」レッスンにはどのくらい時間がかかりますか?

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

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

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

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

  1. await forでリッスンする
  2. 単一購読ストリームとブロードキャストストリーム
  3. ストリームの変換:map、where、take
  4. async*でストリームを作成する
← Dart Academyに戻る