josedasilva @ 16:51

Qua, 20/09/06

Pois é, o uso detse tipo de técnicas, onde não temos o total controlo sobre a velocidade e ordem de recepção de pedidos leva por vezes a histórias destas, aliás é por isso mesmo se chama assíncrono.

Num dos testes de laboratório que tanto gosto de efectuar, estive a testar multiplos pedidos simulâneos assincronos, o que me levou à descoberta de um possível problema, quando não temos em mente que dois pedidos assíncronos, efectuados no mesmo momento, podem ter tempos de resposta variáveis.

Imaginemos a seguinte iteracção:

1. Click num qualquer botão leva ás seguintes acções:

1. Envio de pedido para alterar o estado de um registo na base de dados e actualização da "div" actual
2. Envio de pedido de actualização de uma segunda "div" com o registo editado anteriomente já actualizado

A ideia é simples, imaginem-se duas listas, onde numa se listam registos activos e na outra se listam registos inactivos. Imagine-se que se deseja inactivar um registo, a estratégia passa por actualizar o registo na base de dados como inactivo e actualizar ambas as listas de modo a que o registo passe a constar imediatamente da lista certa.



  1. function deleteRecord() {

  2. doAjaxTODeleteRecordAndUpdateDeletedRecordList() ;

  3. doAjaxTOUpdateActiveRecordsList();

  4. }



O problema ocorre quando o pedido assíncrono de edição do registo para estado inactivo é executado após o pedido de actualização das listas. No meu caso o registo de edição era efectuado antes da actualização das listas, umas vezes e noutras nem por isso.

A solução poderia passar por:



  1. function deleteRecord() {

  2. doAjaxTODeleteRecordAndUpdateDeletedRecordList();

  3. setTimeout(doAjaxTOUpdateActiveRecordsList(),1000);

  4. }



A solução pode passar por obrigar o segundo pedido a ter um delay de alguns micro segundos, não garante que é tratado antes, mas garante que existem infimas probabilidades de não o ser. Ou então executar apenas o segundo pedido quando recebermos a resposta do primeiro.
UPDATE [21 Set 2006]
O Marco, do Webaserio, apresentou uma outra solução para o problema, basicamente a alternativa dele seria actualizar as duas listas na mesma chamada assíncrona, eliminando assim uma das chamadas e conseguindo garantir a ordem das respostas. Outra das soluções falada, em conversa com ele, era a da possibilidade de efectuar a actualização das listas apenas com javascript, e esta seria a solução mais eficaz, que sonsistia em mudar os elementos de lista usando javascript, directamente no DOM.Existem diversas formas de efectuar o mesmo procedimento, vamos ter de optar pela mais correcta dado o problema.

Tags:

eRGgSzDeMuJMJ @ 05:36

Qui, 04/12/14

 

md anderson pharmacy symposium, what is levofloxacin eye drops (http://emoranduc.webpin.com/blog_417503_Where-To-Buy-Cheapest-Ocuflox-0-3--5ml-in-Santa-Ana-chemical-formula-ciprofloxacin.html), [url="http://emoranduc.webpin.com/blog_417503_Where-To-Buy-Cheapest-Ocuflox-0-3--5ml-in-Santa-Ana-chemical-formula-ciprofloxacin.html"]what is levofloxacin eye drops[/url], http://emoranduc.webpin.com/blog_417503_Where-To-Buy-Cheapest-Ocuflox-0-3--5ml-in-Santa-Ana-chemical-formula-ciprofloxacin.html what is levofloxacin eye drops, =-D, terazosin levofloxacin (http://www.harrysrugbypicks.com/ForumRetrieve.aspx?ForumID=317&TopicID=815364&NoTemplate=False), [url="http://www.harrysrugbypicks.com/ForumRetrieve.aspx?ForumID=317&TopicID=815364&NoTemplate=False"]terazosin levofloxacin[/url], http://www.harrysrugbypicks.com/ForumRetrieve.aspx?ForumID=317&TopicID=815364&NoTemplate=False terazosin levofloxacin, okfy,

Blog pessoal de José Silva. Sou programador informático, nos últimos anos dedicado quase exclusivamente ao PHP.
Setembro 2006
Dom
Seg
Ter
Qua
Qui
Sex
Sab

1
2

3
4
5
6
7
8
9

10
12
13
14
16

17
18
19
21
23

24
25
26
27
28
29
30


Pesquisar
 
blogs SAPO