Tecnologia
Requisições síncronas e assíncronas
O objetivo deste artigo é mostrar de forma bem simples como funciona uma requisição utilizando comunicação síncrona e assíncrona. Vamos usar uma ANALOGIA que é muito conhecida de todos nós que já frequentamos uma escola.
No ambiente cliente-servidor, nossas aplicações trabalham através de requisições e respostas, onde o cliente (Ex: Navegador) envia uma requisição e, o servidor (Domínio), local onde está hospedada nossa aplicação, retorna uma resposta. Nesse processo existem diversas etapas, mas abordar cada estado de uma requisição é assunto para outra matéria.
Primeiramente uma abordagem natural do que é cada uma delas.
Síncrona (Synchronous)
Quando uma requisição é enviada, o processo remetente é bloqueado até que ocorra uma resposta, ou seja, não é possível enviar novas requisições até que nossa requisição atual seja finalizada, existe sincronismo entre as requisições.
Assíncrona (Asynchronous)
Em uma requisição assíncrona, não existe sincronismo entre as requisições, sendo assim, podemos enviar diversas requisições em paralelo, onde cada resposta retorna quando estiver pronta.
Requisição vs Prova Escolar
Agora que conhecemos os tipos de requisição, vamos fazer uma analogia com um caso do nosso cotidiano escolar, fazer prova. Quando vamos fazer prova, os professores têm basicamente duas opções, ir de mesa em mesa entregando as provas para cada aluno ou entregar uma quantidade de provas para os primeiros de cada fileira.
Essas situações são equivalentes aos tipos de requisição, pois entregar uma quantidade de provas sempre para a primeira pessoa da fileira, pode, dependendo da ocasião e do professor, ser bem mais prático.
Neste caso, o de entregar as provas para o primeiro aluno, eles mesmos vão pegando a sua e passando o restante para os outros até chegar ao último que, pegando a sua, retorna o restante da sobra, se existir é claro, até o primeiro da fila novamente. Por sua vez, o professor retorna de fileira em fileira resgatando ("sua requisição") o restante da prova para guardar.
Repare que quando ele entregou o pacote para o aluno da primeira fila, ele requisitou que fosse repassado ao seu colega de trás, esse método é assíncrono, ou seja, enviamos uma requisição em paralelo e aguardamos sua resposta a qualquer momento, sem sincronismo.
Já no caso do professor resolver ir de carteira em carteira entregando um a um a prova, existe um sincronismo, ou seja, esse método é síncrono.
AJAX síncrono e assíncrono com jQuery
Muita gente acredita que AJAX se resume em requisições assíncronas, mas isso é um engano, também é possível realizar requisições síncronas, como estudamos anteriormente, nas requisições síncronas, só prosseguimos com nossas tarefas após obter nossa resposta.
Por padrão, o jQuery utiliza requisições assíncronas para trabalhar com AJAX, mas caso seja necessário trabalhar com AJAX através de requisições síncronas, como aguardar a aprovação de uma compra com cartão de crédito por exemplo, precisamos trabalhar com o método jQuery.ajax() configurando sua propriedade async como false.
Vejamos um exemplo de requisição síncrona:
$.ajax({ url: 'script.php', async: false }).done(function(data) { alert(data); });
Agora, uma requisição assíncrona:
$.ajax({ url: 'script.php', async: true }).done(function(data) { alert(data); });
Conteúdo do arquivo script.php chamado nas duas requisições acima:
Faça o teste e lembre-se, no caso de solicitação síncrona o navegador fica bloqueado (às vezes uma tela branca) aguardando o resultado da requisição, afinal o professor está indo de carteira em carteira entregando suas provas.
Espero ter sido claro nas explicações e tenha sanado todas suas dúvidas com este artigo.
Dúvidas, críticas ou sugestões comentem abaixo.=)
Gigasystems Login:
Informe seu e-mail abaixo para continuar!
XVeja Também:
Artigos Relacionados a categoria: Tecnologia
Diferença entre Hardware e Software
26 November de 2014
O Google não usa as meta tags keywords no ranking web
11 November de 2014
Olá, deixe seu comentário para Requisições síncronas e assíncronas
Gualter Quentinho
Everton J Paula
Ana Carolina