J'ai une fonction JavaScript simple:
makeRequest('food');
wait....
makeRequest('shopping'); only if makeRequest('food') has finished
3 Réponses :
Si ces fonctions font réellement une demande AJAX, vous ferez mieux de les garder asynchrones. Vous pouvez faire une demande AJAX synchrone, mais elle empêchera le navigateur de répondre et conduira à une mauvaise expérience utilisateur.
Si ce dont vous avez besoin si ces demandes AJAX sont effectuées l'une après l'autre parce qu'elles dépendent de l'autre, vous devriez enquêter Votre fonction pour voir si elle fournit un mécanisme de rappel. p> en utilisant jQuery, il ressemble à ce que p>
Se rapprocher. J'ai essayé votre premier exemple et Makequest avec des boutiques n'est pas appelé. Je peux lancer une alerte et ce n'est pas déclenché non plus
Cela signifie que vous avez fait quelque chose de mal. Pourquoi ne postez-vous pas ce que vous avez fait?
J'ai pu utiliser le rappel pour éviter la marche à pied; Merci!
Je recommanderais que vous les écrivez simplement de manière asynchrone - par exemple, appelez Makerequest ('Shopping »); du gestionnaire d'achèvement de l'ajax du premier appel. P>
Si vous ne souhaitez pas écrire votre code de manière asynchrone, voir SHARDS JavaScript A > p>
Je suppose que vous avez une méthode de rappel qui prend soin de la réponse de la demande? Une fois que cela l'a fait, laissez-la faire la prochaine demande.
Déclarez une matrice pour la file d'attente et un drapeau à garder une trace de l'état: p> dans le Méthode MADEREQUEST: P> if (queue.length > 0) {
var requestParameter = queue.splice(0,1)[0];
// do the request
} else {
requestRunning = false;
}
Très bien, c'est ce dont j'avais besoin. Pourrait être combiné avec la méthode ici: réponses.yahoo.com/question/index?qid= 20120102010000AA1OLC1
Ils n'exercent qu'un à la fois. Il doit y avoir quelque chose à l'intérieur de ces fonctions qui exécutent de manière asynchrone - une demande Ajax, peut-être?
Oui, tu es correct. Y a-t'il quelque chose que je puisse faire?