await forでリッスンする
イベントを到着した順に読み取る
「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フィードバックを取得できます。ローカル設定は不要です。
このコースのすべてのレッスン
- await forでリッスンする
- 単一購読ストリームとブロードキャストストリーム
- ストリームの変換:map、where、take
- async*でストリームを作成する