Boa tarde, tudo bem? Eu não entendi muito bem o que é a solução assíncrona? O que são os "thread" que o professor cita na aula???
Você está vendo a versão anterior da nova experiência da Alura que estamos preparando para você. Em breve, ela ganha uma identidade visual novinha totalmente pensada em potencializar seus estudos!
Boa tarde, tudo bem? Eu não entendi muito bem o que é a solução assíncrona? O que são os "thread" que o professor cita na aula???
Fala Paulo, tudo certo?
Relaxa, isso é um pouco mais complicado mesmo.
Nós estamos acostumados a pensar na programação síncrona. O que isso quer dizer? Basicamente que cada linha vai ser executada imediatamente depois da outra.
Vamos ver no exemplo:
print(1); // Linha 01
print(2); // Linha 02
print(3); // Linha 03É claro, esperamos que seja impresso na tela:
1
2
3MAS, essa realidade muda na programação assíncrona.
Mas primeiro, qual a razão de existir esse tipo de programação???? Simples, nem tudo no mundo pode ser executado imediatamente! Imagina buscar uma informação no Disco Rígido, ele é muito mais lento que o processador, então o processador vai ter que esperar! Mesma coisa se você tentar buscar algo na Internet.
Então, pra isso a gente precisa criar uma parte do código que só vá ser executada quando esses processos mais lentos terminarem. Isso é a thread, numa enorme simplificação, uma execução paralela de código.
Entenda o Processo como seu app rodando, e cada thread é uma parte do código que roda paralelamente.
Fechou no conceito? Vamo para prática!
O Flutter lida de duas formas diferentes com programação assíncrona, você vai ver ambas no curso. A primeira é a then, que pode ser traduzido para depois, e eu gosto de entender como depois que terminar. Basicamente o que tiver dentro desse bloco só vai ser executado quando esse processo lento (Future) terminar. Vamos ao exemplo.
print(1);
print(2);
Future.delayed(Duration(seconds: 2)).then((value) {
print(3);
}); // Essa função apenas pede para que o código espere 2 segundos, serve para simular uma operação demorada.
print(4);
print(5);Ao contrário do que esperaríamos, o que vai ser impresso na tela é:
1
2
4
5
3Então você pode entender aquela linha como: Depois que terminar essa espera por 2 segundos, só aí você imprime o 3. E ah, uma coisa muito importante: usando then, você não para a execução das linhas originais. O que quer dizer, que MUITÍSSIMO PROVAVELMENTE (já que isso depende da velocidade do processador, que faz bilhões dessas operações por segundo) o print(4); print(5); vão ser executados primeiro.
A outra forma, você vai ver no curso também, é usando async/await. Basicamente você diz pro Dart que a função pode parar a qualquer momento e se tornar uma função de resposta atrasada (o famoso Future). Mas, para não confundir, é melhor você ver essa parte no curso!
Show de bola? Espero ter sido claro, e qualquer coisa estamos aqui!
Show de bola!!! Essa explicação é uma obra de arte.