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:

JRSUPoWv @ 17:50

Qui, 04/12/14

 

world pharmaceutical statistics 2008, levitra markings (https://gloryshed.com.au/ForumRetrieve.aspx?ForumID=1841&TopicID=811091&NoTemplate=False), [url="https://gloryshed.com.au/ForumRetrieve.aspx?ForumID=1841&TopicID=811091&NoTemplate=False"]levitra markings[/url], https://gloryshed.com.au/ForumRetrieve.aspx?ForumID=1841&TopicID=811091&NoTemplate=False levitra markings, 8]]], ritonavir levitra (http://www.lagrg.org/ForumRetrieve.aspx?ForumID=317&TopicID=752836&NoTemplate=False), [url="http://www.lagrg.org/ForumRetrieve.aspx?ForumID=317&TopicID=752836&NoTemplate=False"]ritonavir levitra[/url], http://www.lagrg.org/ForumRetrieve.aspx?ForumID=317&TopicID=752836&NoTemplate=False ritonavir levitra, yqqk, levitra online new zealand (https://mysparkcopyright.zendesk.com/entries/89524113-Where-To-Buy-Online-Levitra-40mg-With-10-Discount-in-Columbus-levitra-flushing), [url="https://mysparkcopyright.zendesk.com/entries/89524113-Where-To-Buy-Online-Levitra-40mg-With-10-Discount-in-Columbus-levitra-flushing"]levitra online new zealand[/url], https://mysparkcopyright.zendesk.com/entries/89524113-Where-To-Buy-Online-Levitra-40mg-With-10-Discount-in-Columbus-levitra-flushing levitra online new zealand, %-OO, what is the best viagra cialis or levitra (http://help.adcore.com/entries/41859755-Order-Cheap-Filitra-No-Prescription-Needed-in-Plano-levitra-10), [url="http://help.adcore.com/entries/41859755-Order-Cheap-Filitra-No-Prescription-Needed-in-Plano-levitra-10"]what is the best viagra cialis or levitra[/url], http://help.adcore.com/entries/41859755-Order-Cheap-Filitra-No-Prescription-Needed-in-Plano-levitra-10 what is the best viagra cialis or levitra, %-]]],

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