2011-01-05 4 views
1

Est-il possible de faire un blocage rpc gwt? c'est-à-dire l'application bloque jusqu'à ce qu'une réponse soit reçue du serveurGWT faire un blocage RPC

+0

Vous voudrez peut-être ajouter un peu plus d'informations. Bloquer les appels dans une application javascript (ce qui se résume en fin de compte à GWT) n'est presque jamais une bonne idée. Vous devez avoir de très bonnes raisons de le faire, et la plupart des choses peuvent être résolues en utilisant des appels asynchrones (par exemple, définir un drapeau et ne pas exécuter certaines choses si elles sont définies). – tdammers

+0

J'ai une application qu'il peut charger complètement si les détails de l'utilisateur sont obtenus à partir du serveur, donc quand l'application démarre, je fais un RPC et puis le résultat de la RPC sont utilisés pour nourrir dans l'application, je ne peux pas continuer jusqu'à la les données de la RPC est obtenue, donc je veux faire le blocage RPC de sorte que seulement lorsque le RPC se termine, alors l'application peut commencer – Noor

Répondre

4

Pour autant que je sache, il n'y a pas de blocage de gwt rpc car il est opposé au rappel asynchrone.

Mais vous pouvez utiliser ces deux méthodes

  1. minuterie. Comptez la minuterie et vérifiez qu'il n'y a aucun objet de retour qui n'est pas nul et arrêtez et annulez la minuterie et continuez votre travail. Si la minuterie est active, ne faites pas d'autre travail. C'est très très inefficace. Manque de motif de conception OO et trop d'instructions if-else-if
  2. Appelez Rpc et effectuez toutes les actions dans la méthode onSuccess(). Il garantit que votre méthode est terminée et terminée avec succès, puis continuez vers d'autres méthodes.

Mon conseil est 2ème (onSuccess). Je tiens à mentionner à nouveau que le blocage n'est jamais une bonne idée

0

La solution la plus simple qui est venu à mon esprit serait de « bloquer » votre application à partir du point où l'appel asynchrone commence jusqu'à la fin du remplissage, ce qui correspond à la fin de la méthode onSuccess(). En bloquant, je veux juste montrer animated loading gif au milieu de la page.