Future.wait e lavoro parallelo
Eseguire più future contemporaneamente.
Future.wait e lavoro parallelo è una lezione Dart Academy gratuita su CoddyKit. Questa è la lezione 4 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.
Attendere uno alla volta è lento
Attendere i future in sequenza costringe ciascuno ad aspettare il precedente. Tre chiamate da un secondo richiedono quindi tre secondi in totale.
Avviarli insieme
Avvii prima le chiamate asincrone indipendenti, quindi le attenda. Vengono eseguite in concorrenza, perciò il tempo totale dipende dalla più lenta, non dalla somma dei tempi.
Ecco Future.wait
Future.wait accetta una lista di future e restituisce un unico future che viene completato quando tutti sono terminati.
final results = await Future.wait([a(), b(), c()]);I risultati restano in ordine
Future.wait restituisce una lista di risultati nello stesso ordine dei future in input, indipendentemente da quale sia terminato per primo.
final list = await Future.wait([one(), two()]);
print(list[0]); // result of one()Risparmio di tempo reale
Tre future paralleli da un secondo terminano insieme in circa un secondo, perché Future.wait sovrappone i tempi di attesa.
Se uno fallisce
Per impostazione predefinita, se un future genera un errore, Future.wait si completa immediatamente con quell'errore, anche se gli altri sono ancora in esecuzione.
Continuare con eagerError
Passi eagerError: false e Future.wait attenderà comunque ogni future prima di segnalare il primo errore rilevato.
await Future.wait(tasks, eagerError: false);Una gara con Future.any
Le serve solo il risultato più rapido? Future.any si completa non appena ha successo il primo future della lista.
final fastest = await Future.any([mirrorA(), mirrorB()]);Creare la lista
Un pattern comune consiste nell'applicare map agli input per creare una lista di future, quindi passarla direttamente a Future.wait.
await Future.wait(ids.map(fetchUser));Concorrenza, non thread paralleli
Questa è concorrenza in un isolate: l'event loop alterna le attese. Per il lavoro intensivo per la CPU, ricorrerebbe agli isolate.
Quando usare ciascuno
Utilizzi Future.wait quando le servono tutti i risultati e Future.any quando le serve solo il primo ad arrivare. ⚖️
Verifica rapida
Una verifica rapida sull'esecuzione congiunta dei future.
Riepilogo: Future concorrenti
Ha imparato a sovrapporre il lavoro asincrono con Future.wait per ottenere tutti i risultati, a usare Future.any per il più rapido e a capire il comportamento degli errori. 🏁
Domande Frequenti
La lezione «Future.wait e lavoro parallelo» è gratuita?
Sì — il testo completo di «Future.wait e lavoro parallelo» è 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 «Future.wait e lavoro parallelo»?
Eseguire più future contemporaneamente. 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 4 di 4.
Quanto tempo richiede la lezione «Future.wait e lavoro parallelo»?
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
- Event loop e microtask
- Creare e attendere i Future
- Gestire gli errori nel codice async
- Future.wait e lavoro parallelo