Ascoltare con await for
Leggere gli eventi man mano che arrivano.
Ascoltare con await for è una lezione Dart Academy gratuita su CoddyKit. Questa è la lezione 1 di 4. Puoi leggere la lezione completa qui gratuitamente — poi esercitati direttamente nel browser con un editor di codice integrato e un tutor IA disponibile 24/7. Fa parte del percorso di apprendimento Dart Academy, e i tuoi progressi si sincronizzano tra il web e l'app CoddyKit. Il corso Dart Academy include 4 lezioni in totale.
Che cos'è uno Stream
Uno Stream è una sequenza di valori che arrivano nel tempo, non tutti insieme. Lo si può vedere come un Future capace di fornire molti risultati invece di uno solo.
Stream vs Future
Un Future Le restituisce un valore in un secondo momento. Uno Stream Le fornisce un'intera serie di eventi, uno dopo l'altro, finché non segnala di aver terminato. 🌊
Incontriamo await for
Il ciclo await for legge gli eventi da uno stream man mano che arrivano. A ogni iterazione del ciclo viene assegnato il valore successivo emesso dallo stream.
await for (final value in stream) {
print(value);
}Deve trovarsi in async
Poiché await for si mette in pausa per attendere gli eventi, funziona solo all'interno di una funzione contrassegnata con async. La funzione resta sospesa finché il valore successivo non è pronto.
Future<void> show(Stream<int> s) async {
await for (final n in s) print(n);
}Uno Stream da ascoltare
Può creare rapidamente uno stream con Stream.fromIterable. Questo emette ogni elemento dell'elenco nell'ordine corretto, perfetto per provare await for.
final stream = Stream.fromIterable([1, 2, 3]);Iterare sugli eventi
Associando quello stream a await for, il ciclo viene eseguito una volta per ogni valore emesso. In questo esempio stampa prima 1, poi 2 e infine 3.
await for (final n in Stream.fromIterable([1, 2, 3])) {
print(n);
}Attendere tra gli eventi
Spesso gli stream reali fanno una pausa tra un evento e l'altro. Con await for, il codice attende semplicemente durante questi intervalli e riprende non appena arriva il valore successivo. ⏳
final ticks = Stream.periodic(
Duration(seconds: 1), (i) => i);Il ciclo termina naturalmente
Quando uno stream termina l'invio degli eventi, manda un segnale done. Il ciclo await for termina autonomamente e la funzione prosegue con le istruzioni successive.
await for (final n in finiteStream) print(n);
print('Stream finished');Gli errori raggiungono il ciclo
Se lo stream emette un error, l'errore viene lanciato direttamente sulla riga await for. Può racchiudere il ciclo in try/catch per gestirlo correttamente.
try {
await for (final n in maybeFails) print(n);
} catch (e) {
print('Caught: $e');
}break annulla l'ascolto
Usando break all'interno di await for, il ciclo si interrompe e l'iscrizione allo stream viene annullata in modo silenzioso. Non riceverà più gli eventi rimanenti.
await for (final n in stream) {
if (n > 100) break;
}Un ascoltatore alla volta
Un ciclo await for si iscrive a uno stream a sottoscrizione singola. Questo stream può essere letto una sola volta, quindi un secondo ciclo su di esso genererebbe un errore.
Verifica rapida
Verifichi ciò che sa su await for.
Riepilogo
Ha imparato che uno Stream fornisce molti valori nel tempo e che await for li legge uno alla volta all'interno di una funzione async, fino al segnale done. Ottimo lavoro! 🎉
Domande Frequenti
La lezione «Ascoltare con await for» è gratuita?
Sì — il testo completo di «Ascoltare con await for» è gratuito qui sul web. Per esercitarvi in modo interattivo (un editor di codice integrato e un tutor IA 24/7) e sbloccare il resto del corso Dart Academy, passa a CoddyKit PRO. Il corso Dart Academy include 4 lezioni in totale.
Cosa imparerò in «Ascoltare con await for»?
Leggere gli eventi man mano che arrivano. Eserciti Dart Academy con codice pratico che esegui direttamente nel browser, e un tutor IA 24/7 risponde alle tue domande mentre lavori sulla lezione.
Ho bisogno di esperienza per iniziare Dart Academy?
Non è richiesta alcuna esperienza precedente. Dart Academy su CoddyKit è strutturato per principianti e studenti avanzati, quindi puoi iniziare da qui o dall'inizio e procedere al tuo ritmo. Questa è la lezione 1 di 4.
Quanto tempo richiede la lezione «Ascoltare con await for»?
La maggior parte delle lezioni CoddyKit richiede circa 5–10 minuti. Ogni lezione è breve e interattiva, quindi fai progressi costanti e riprendi esattamente da dove hai lasciato su web e app.
Posso scrivere ed eseguire codice in questa lezione Dart Academy?
Sì. Ogni lezione Dart Academy include un editor di codice integrato, quindi scrivi ed esegui codice reale direttamente nel tuo browser e ricevi feedback istantaneo dall'IA — nessuna configurazione locale necessaria.
Tutte le lezioni di questo corso
- Ascoltare con await for
- Stream singoli e broadcast
- Trasformare gli stream: map, where, take
- Creare stream con async*