ajax assíncrono x síncrono

26 views
Skip to first unread message

Guionardo Furlan

unread,
Aug 7, 2015, 12:55:51 PM8/7/15
to jque...@googlegroups.com
Buenas pessoal

Tenho um processo simplificado para explicar uma dúvida que sempre tenho.

1. Página de cadastro genérico.
2. Botão ADICIONAR que dispara um evento click
3. O evento segue o seguinte roteiro:
a) Carrega um conteúdo HTML via AJAX (jquery)
b) Com o conteúdo HTML (form), monta um modal
c) O modal fica visível e o usuário preenche os campos.
d) Botão SUBMIT do form, faz nova requisição AJAX para enviar os dados e fecha o modal
e) Retorno do último AJAX traz a informação que atualizará alguma DIV na página

Este processo é sequencial e para isso tenho usado a chamada síncrona do AJAX, pois o primeiro (a) deve encerrar antes que o segundo (d) seja chamado.
Sei que não é o ideal, inclusive sendo avisado pelo log no console do navegador.

Qual seria a abordagem ideal para este tipo de processo?

--
Timeo hominem unius libri

[]s
Guionardo Furlan
http://www.guionardofurlan.com.br

Leonardo Cruz Costa

unread,
Aug 7, 2015, 2:44:06 PM8/7/15
to jque...@googlegroups.com
Veja, o significado de AJAX começa com "Asynchronous". Uma requisição dessa, conforme descrita, não precisa usar AJAX. Qual o sentido de usar o AJAX aqui?

--
--
Grupo de jQuery Brasil.
 
REGRAS: https://docs.google.com/document/d/1VfvTDmeHTSj-L5ouZJjQQ4OkjTCU1Hr2XtPYBNGVHH4/edit
 
USE O JSBIN.COM / JSFIDDLE.NET PARA CÓDIGOS.
 
Email: jque...@googlegroups.com
Biba: jquery-br+...@googlegroups.com
Site: http://groups.google.com/group/jquery-br?hl=pt-BR

---
Você recebeu essa mensagem porque está inscrito no grupo "jQuery (Brasil)" dos Grupos do Google.
Para cancelar inscrição nesse grupo e parar de receber e-mails dele, envie um e-mail para jquery-br+...@googlegroups.com.
Para mais opções, acesse https://groups.google.com/d/optout.

Rodrigo Matos

unread,
Aug 7, 2015, 3:55:21 PM8/7/15
to jque...@googlegroups.com
Guionardo,

eu alteraria só um ponto no seu fluxo

1. Página de cadastro genérico.
2. Botão ADICIONAR que dispara um evento click
3. O evento segue o seguinte roteiro:
a) Carrega um conteúdo HTML via AJAX (jquery)
b) aqui voce diz no retorno do ajax ? correto ??  Com o conteúdo HTML (form), monta um modal 
c) O modal fica visível e o usuário preenche os campos.
d) Botão SUBMIT do form, faz nova requisição AJAX para enviar os dados aqui eu só fecharia a modal no success do ajax, para ter certeza que a requisição finalizou  e fecha o modal e continuaria para o item e)
e) Retorno do último AJAX traz a informação que atualizará alguma DIV na página 


fazendo isso vc não precisa alterar pra síncrona a declaração, vc está amarrando os eventos para que só sejam executados ao terminar as requisições.. sem precisar que sejam sincronas por definição

Guionardo Furlan

unread,
Aug 8, 2015, 8:00:48 AM8/8/15
to jque...@googlegroups.com
Obrigado pelas respostas.

Eu já imaginava que o processo estava mal-planejado, apesar de funcionar.
Qual seria o modelo de fluxo ideal nesse caso?

Leonardo Cruz Costa

unread,
Aug 10, 2015, 10:44:22 AM8/10/15
to jque...@googlegroups.com
Olá Guionardo.
Eu entendo que o fluxo é constituído por duas partes:
1º Carregamento do form;
2º Upload dos dados;
E são independentes. Entre os passos b) e c) o usuário pode fechar o formulário sem preenchê-lo (mudou de ideia, ou não é mais necessário fazer aquele cadastro, etc.). Sugiro que utilize o método .load() para carregar o formulário e o método .post() para enviar os dados via submit.
É claro que essa não precisa ser uma solução universal, e podem existir soluções melhores a propósito, mas essa atende ao requisito e pode ser uma solução única para todos os formulários do seu sistema.
Reply all
Reply to author
Forward
0 new messages