2010-06-28 11 views
0

J'écris une application Web dans Flex (SDK 3.5).
mon programme envoie des appels de service Web de manière asynchrone au serveur qui me donne des données.
Je veux gérer un cas lorsque l'utilisateur envoie quelques demandes avant que les réponses aux demandes précédentes
ont été répondues. Dans un tel cas, je veux donner à l'interface utilisateur uniquement la dernière réponse à la demande.
Il est similaire à la page Web où l'utilisateur clique plusieurs fois sur un bouton. comment montrer seulement la réponse finale
?
J'ai une idée pour enregistrer le dernier identifiant de requête dans ma classe proxy/BusinessDelegate. puis, vérifiez l'identifiant de jeton pour voir s'il est identique au dernier identifiant de requête. Et puis j'envoie les données à l'interface utilisateur à afficher.
Que pensez-vous de cette idée? Quelqu'un a-t-il une meilleure idée?
grâce,Conception d'interface utilisateur asynchrone avec Webservice appelant

Répondre

1

Voilà comment je gérer ce genre de situation

private var lastToken:AsyncToken; 
public var service:RemoteObject; 

public function makeRequest():void 
{ 
    lastToken = service.doSomething(); 
    lastToken.addResponder(
     new AsyncResponder(handleResult, handleFault, lastToken) 
    ); 
} 

public function handleResult(result:Object, requestToken:Object):void 
{ 
    if(requestToken !== lastToken) return; 
    else 
    { 
     // handle result 
    } 
} 

public function handleFault(fault:Object, requestToken:Object):void 
{ 
    if(requestToken !== lastToken) return; 
    else 
    { 
     // handle fault 
    } 
} 
0

Je pense que votre idée est la bonne approche, parce que c'est la façon dont il est! :-)

Je le fais de la même manière que Ryan en réponse et je pense que votre idée a la même direction. Les classes Flex RPC utilisent la même approche avec la propriété lastResult.