Comment rendre les méthodes Meteor synchrones?
J'ai besoin d'un moyen pour un météore appel synchrone de sorte que lorsqu'un appel est exécuté le code attend pour un résultat à faire de sorte qu'il peut continuer à la ligne suivante de code sur le client.
par exemple:
clientFunction = function(){
Meteor.call('serverFunction', function(err,result){})//<--so when this gets a result and
//is stored in a session variable
var doSomeThing = Session.get('whatever') <-- so that your able to use it here
}
J'ai essayé de faire une boucle while pour empêcher quelque chose de se produire jusqu'à ce qu'une valeur est retournée
mais il me semble qu'il s'exécute après la clientFunction ainsi lançant à sa disparition
toute aide serait appréciés
source d'informationauteur cronicryo
Vous devez vous connecter pour publier un commentaire.
C'est une question très fréquente, être invité dans différentes formes et formes. La plupart des gens ne réalisent pas quand ils font des appels asynchrones. La solution, cependant, est toujours le même: enveloppez votre code de la méthode sur le serveur dans une fibre ou d'utiliser un avenir.
De la meilleure pratique, je pense, est d'utiliser le actuellement disponibles
Meteor._wrapAsync
fonction comme décrit, par exemple, ici:Meteor: Appel d'une fonction asynchrone à l'intérieur d'un Météore.méthode et renvoie le résultat
Quelques autres options sont décrites ici:
https://gist.github.com/possibilities/3443021
Mise à jour: La méthode est appelée
Meteor.wrapAsync
.Mettre le code que vous voulez exécuter une fois que la méthode est terminée dans la méthode de rappel. C'est la norme pour tout le javascript asynchrone.
Qui définit la valeur de la variable de session une fois que l'appel de la méthode retourne. Maintenant, vous utilisez de Meteor réactivité utiliser cette variable:
J'ai suivi cette tutoriel et faire quelque chose comme ci-dessous
C'est un météore côté serveur méthode
Et je l'appelle à partir d'un client comme ça
Noter qu'il n'est pas synchrone, mais vous obtenez la valeur de retour dans le rappel