e a utilização de awaits professor Eu já vi await sendo utilizado em aplicações que eu já vi em outras situações em Outras aplicações que eu tive explorando ali no github ou ouv em cursos Professor Eu também viu um termo chamado assin Qual a relação entre os dois Professor Por que nessa implementação nós não utilizamos todas essas são perguntas que podem existir e a gente vai precisar discutir um pouquinho delas obviamente por no no decorrer do processo das implementações a gente vai entender muito mais a utilização prática desses desses temas dessas implementações dessas palavras-chave que a
gente vai est no escopo realista ali da Necessidade daqueles comandos mas antes da gente chegar lá a gente vai discutir aqui muito rápido de uma forma um pouco um pouco superficial que D para aprofundar a gente tenta aprofundar mas o que que seria a utilização dos aits a utilização dos asss e aquele termo que eu vi tesque Professor Carlos para que que serve tudo isso aqui a gente não tá usando né bem e primeiro pra gente poder responder essa pergunta a gente precisa pensar num problema porque us a weights us a SNS essas tesc que
a gente utiliza para retorno elas estão associadas a um problema absolutamente nada existe só Existir existe um problema associado bem então imaginemos que a nossa aplicação tá aqui né ela tem algumas necessidades ela precisa consultar um outro servidor de banco por exemplo ela pode precisar consultar uma outra api um outro serviço e esse serviço é independente é um processo assíncrono que tá executando ali você não tá preso aquela aquele sistema então quando a gente tem uma situa como essa principalmente pelo fato de poder ter uma demora de resposta a gente precisa comunicar a aplicação como
se comportar nesses cenários deixa eu pegar aqui o Ah já tem um trechinho aqui ó eu vou até desfazer eu tava tava rabiscando Então temos aqui um exemplo né de uma s implementado com esse eu vou remover aqui para deixar da forma que tava antes né Ó então ele tava absolutamente jeito tá então só que nós precisamos que precisamos fazer uma consulta consulta por exemplo Opa uma consulta por exemplo a um serviço um outro serviço primeiro que esse outro serviço pode necessitar de 1 segundo 10 segundos 20 ou quanto tempo que for necessário para nos
dar essa resposta e a pergunta é nós vamos esperar por essa resposta ela é necessária as informações de retorno desta solicitação é necessária para o resto do nosso método continuar executando se for necessáo nós vamos precisar informar pra aplicação que existe uma necessidade de uma espera para isso pra gente simular isso nós vamos criar aqui um tesque pto delay que tava aqui há pouco tempo né e vou utilizar aqui 10.000 mos para simular essa situação de espera nesse caso Aqui nós temos o nosso código né uma implementação bruta como de uma espera do nosso algoritmo
tá então isso aqui nem seria o melhor exemplo mas vamos fingir que esse nosso tesque delay representa essa chamada assíncrona Então essa chamada assíncrona se nós chamarmos simplesmente assim o nosso método vai entender que tem que fazer a chamada e vai fazer essa chamada e vai continuar todo o resto do algoritmo é importante considerar de que se eu necessitar de dados que vem daqui né dados e esse var dados eu necessito armazenar um conjunto de dados para esse delay que vem desse dessa espera né E esses dados vão ser carre vão ser pesquisados vão ser
Ahã tratados antes de eu devolver então Eu precisaria esperar agora se esse dados que eu tenho aqui não é importante pro resto da execução do meu algoritmo Nós podemos não amarrar uma espera aqui fiz a chamada e Através de outros métodos eu tentar informar a minha aplicação dica concluir esse processo a questão é que em uma grande massa de vezes nós necessitamos dessas respostas para continuar o nosso algoritmo Então vou até colocar um comentário aqui para ficar de fácil lembrete simulando ã uma chamada a api externo perfeito então que a gente tá fazendo essa simulação
só que nós precisamos informar o o aplicação se eu quero que você espere essa resposta Porque é importante Se dado pro rest algoritmo eu tenho que dizer aplicação você não vai só fazer a chamada e continuar sua vida você vai fazer uma espera e o legal quando a gente diz que tem que fazer aqui uma espera a gente não tá necessariamente dizendo a aplicação que ela trave aplicação trave né não responda mais nenhuma solicitação fique aqui erado e E se demorar um dia essa resposta você vai ficar um dia travado aí sem conseguir responder ninguém
então não é isso que acontece a gente tem uma situação que a gente tá pedindo para esperar mas a Gente Tá informando através de um assíncrono desse método de que essa espera ela não é bloqueante ela é uma esperem que a tred no momento em que não é concluída essa chamada a tred vai ficar livre para executar outros processos observemos aqui ó que ficou uma uma informação né de erro o operador we pode somente ser usado em um método assíncrono Considere a possibilidade de marcar este método com o modificador assin e alterar seu tipo para
retorno tesque ó que interessante Então ele não só pediu pra gente determinar aqui como Aim como também pedir ó assumiu erro Só que apareceu um outro problema né o tipo de retorno de um método assíncrono precisa ser nulo tesque ou tesque de uma entidade então observemos que eu não não atribuí esse tesque de retorno por que que nós precisamos esse test de retorno e como nós temos o método assíncrono nós precisamos informar de que nós vamos retornar aqui uma tesque um um um um um processo uma execução que ela vai ser gerenciada nesse método assíncrono
isso nos permite ter uma espécie de algoritmo que tá reservado ali para essa execução né que é o algoritmo no nosso próprio método que tá reservado para essa execução e que o o a própria tred vai conseguir fazer a gestão das teses disponíveis para execução e retorno e espera aguardar a finalização de um a que tá ali em modo weight e assim sucessivamente então o que que nós temos sucessivamente acho que não seria a melhor palavra mas nesse sentido bem então nós temos aqui uma ass em que nós informamos que o nosso método é assíncrono
permitindo o nosso método de forma assíncrona executar esperas essas estão associadas a tesque que nós vamos retornar ou seja no momento em que a espera foi feita e que a tred fica liberada para executar outras tarefas até a conclusão dessa espera Lembrando que esse teste aqui é só uma simulação para essa nossa chamada que poderia ser uma chamada num banco de dados num servidor de banco poderia ser uma chamada de uma outra de um outro serviço e assim excessivamente de novo e nesse sentido bem então Eh simulando né então nós estamos informando de que nesse
nosso nesse nosso método assíncrono nós temos uma situação de espera e essa nossa espera que vai ser gerenciada pelas treds as teses que estão em execução nos métodos assíncronos a gente vai conseguir desbloquear Nossa tred para outros processos e ao finalizar essa resposta dessa chamada a nossa tred vai voltar a executar o nosso método e seguir com a execução do nosso endpoint aqui né nesse caso a gente não atribuiu a resposta da chamada dessa nossa simulação de um api externa para uma variável por exemplo n a gente poderia ter aqui um um v r de
retorno em que esse v r receberia o retorno dessa possível chamada externa e esse possível retorno só seria preenchido Depois dessa espera ser totalmente finalizada então o que que nós temos aí aqui tá dando um problema porque não tem de fato o que retornar né tá um void aqui né não tem nenhum possível retorno para essa chamada mas quando a gente ver a nas nas próximas aulas implementando ali banco e outras chamadas a gente já vai ter cenários de de fato ter um retorno vindo para cá e através dessa variável R nós temos aqui todo
o algoritmo que vai realizar o comportamento desses dados associar com outros dados e a gente poder retornar uma determinada informação que ficou dependente associado com dados que a gente precisou que foram esperados para devolver e mesmo com a gente utilizando esse esse tesque de retorno né que tá muito preso a necessidade desse a que tá associado à nossa espera nós conseguimos fazer o retorno da nossa listagem como se não tivesse um tesque associado olha aqui ó nós não precisamos retornar um tipo tesque aqui por exemplo né a gente conseguiu retornar especificamente a nossa lista o
nosso enumerable de cliente nossa lista de Clientes estão sendo retornados através Desse nosso método mesmo esse tesque esse tesque acabou funcionando muito mais como Informante a nossa tred de que existe uma tesque que vai estar bloqueada e desbloqueada em um momento ou em outro dada as condições de implementações de a gente vai est usando dentro desse método que é o método assíncrono então para esse primeiro momento né que a gente tá fazendo apenas essa simulação desse tesque delay né a gente não vai segir com essa implementação e ver outras outras formas mas a gente vai
fazer práticas a gente tiver ali a gente conseguiu entender esse conceito e a gente vai fazer muitas práticas com isso aí que não vai não vai ter absolutamente complexidade alguma a gente vai precisar fazer implementações absolutamente dessa forma aí com as chamadas que a gente vai estar fazendo na nossa aplicação que assim necessitarem fazer uma chamada em serviço que a gente quer ter de fato essa espera sendo executada m