Future.wait e trabalho paralelo
Execute vários futures simultaneamente.
Future.wait e trabalho paralelo é uma aula grátis de Dart Academy no CoddyKit. Esta é a aula 4 de 4. Você pode ler a aula completa abaixo gratuitamente — depois pratica ao vivo no navegador com um editor de código integrado e um tutor de IA 24/7. Faz parte do caminho de aprendizado de Dart Academy, e seu progresso é sincronizado entre a web e o app CoddyKit. O curso de Dart Academy inclui 4 aulas no total.
Aguardar um por vez é lento
Aguardar Futures em sequência faz cada um esperar pelo anterior. Assim, três chamadas de um segundo levam três segundos no total.
Inicie-os juntos
Inicie primeiro as chamadas assíncronas independentes e aguarde-as depois. Elas são executadas concorrentemente, portanto o tempo total acompanha a mais lenta, e não a soma de todas.
Conheça Future.wait
Future.wait recebe uma lista de Futures e retorna um único Future que é concluído quando todos terminam.
final results = await Future.wait([a(), b(), c()]);Os resultados permanecem na ordem
Future.wait fornece uma lista de resultados na mesma ordem dos Futures de entrada, independentemente de qual terminou primeiro.
final list = await Future.wait([one(), two()]);
print(list[0]); // result of one()Economia de tempo real
Três Futures paralelos de um segundo terminam juntos em cerca de um segundo, pois Future.wait sobrepõe as esperas.
Se um falhar
Por padrão, se qualquer Future gerar um erro, Future.wait será concluído imediatamente com esse erro, mesmo que os outros ainda estejam em execução.
Continue com eagerError
Passe eagerError: false, e Future.wait ainda aguardará todos os Futures antes de informar o primeiro erro encontrado.
await Future.wait(tasks, eagerError: false);Competindo com Future.any
Precisa apenas do resultado mais rápido? Future.any é concluído assim que o primeiro Future da lista obtém sucesso.
final fastest = await Future.any([mirrorA(), mirrorB()]);Construindo a lista
Um padrão comum é usar map nas entradas para criar uma lista de Futures e então passá-la diretamente para Future.wait.
await Future.wait(ids.map(fetchUser));Concorrência, não threads paralelas
Isso é concorrência em um único isolate: o loop de eventos intercala as esperas. Para trabalhos intensivos de CPU, você usaria isolates.
Quando usar cada um
Use Future.wait quando precisar de todos os resultados e Future.any quando precisar apenas do primeiro a chegar. ⚖️
Verificação rápida
Verificação rápida sobre a execução conjunta de Futures.
Recapitulação: Futures paralelos
Você aprendeu a sobrepor trabalho assíncrono com Future.wait para obter todos os resultados, usar Future.any para obter o mais rápido e entender como os erros se comportam. 🏁
Perguntas Frequentes
A aula “Future.wait e trabalho paralelo” é grátis?
Sim — o texto completo de “Future.wait e trabalho paralelo” é grátis para ler aqui na web. Para praticá-la interativamente (um editor de código integrado e um tutor de IA 24/7) e desbloquear o restante do curso de Dart Academy, atualize para CoddyKit PRO. O curso de Dart Academy inclui 4 aulas no total.
O que vou aprender em “Future.wait e trabalho paralelo”?
Execute vários futures simultaneamente. Você pratica Dart Academy com código prático que executa diretamente no navegador, e um tutor de IA 24/7 responde suas dúvidas enquanto trabalha na aula.
Preciso ter experiência prévia para começar Dart Academy?
Nenhuma experiência prévia é necessária. Dart Academy no CoddyKit é estruturado para alunos iniciantes até avançados, então você pode começar aqui ou desde o início e aprender no seu ritmo. Esta é a aula 4 de 4.
Quanto tempo leva a aula “Future.wait e trabalho paralelo”?
A maioria das aulas CoddyKit leva cerca de 5–10 minutos. Cada uma é compacta e interativa, então você faz progresso constante e retoma exatamente de onde parou entre web e app.
Posso escrever e executar código nesta aula de Dart Academy?
Sim. Cada aula de Dart Academy inclui um editor de código integrado, então você escreve e executa código real direto no navegador e recebe feedback de IA instantaneamente — nenhuma configuração local necessária.
Todas as aulas deste curso
- O loop de eventos e as microtarefas
- Criar e aguardar Futures
- Tratamento de erros em código assíncrono
- Future.wait e trabalho paralelo