12
votes

Forcer la fonction JavaScript Appelez pour attendre que le précédent soit terminé.

J'ai une fonction JavaScript simple:

makeRequest('food');
wait....
makeRequest('shopping'); only if makeRequest('food') has finished


2 commentaires

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?


3 Réponses :


15
votes

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. xxx

en utilisant jQuery, il ressemble à ce que xxx


3 commentaires

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!



1
votes

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.

Si vous ne souhaitez pas écrire votre code de manière asynchrone, voir SHARDS JavaScript


0 commentaires