Est-il possible de définir async:false $.getJSON appel
Est-il possible de async: false
lors de l'appel de $.getJSON()
de sorte que l'appel des blocs plutôt que d'être asynchrone?
- Il suffit de mettre votre code dans la fonction de rappel.... Il y a une raison de ce qui est obsolète - c'est une mauvaise idée
- Très étrange... Officiellement, il est déconseillé; en réalité, il ne l'est pas. Si c'était vraiment obsolète, la possibilité de faire un sync appel AJAX ou un $ajax.commutateur d'installation aurait été abandonné dans jQuery 3. Comme une question de fait, une synchronisation appel est parfois très utile, par exemple lors de l'initialisation des variables globales avec les données JSON, lorsque vous avez d'autres globals qui s'appuient sur le premier lot. (Emballage de l'ensemble du processus d'initialisation de la fonction de rappel pourrait être très difficile dans certaines circonstances.)
- Je pense que Synchrone demandes XHR ou de Restructuration de code serait répondre à cette affaire.
Vous devez vous connecter pour publier un commentaire.
Vous avez besoin de faire l'appel à l'aide
$.ajax()
de manière synchrone, comme ceci:Cela correspond actuellement à l'aide de
$.getJSON()
comme ceci:type: 'POST'
option permettant ainsi de le transformer en un post si vous ne souhaitez pas utiliserasync: false
à moins que vous vraiment faut - il va de verrouillage de l'INTERFACE utilisateur.Les deux réponses sont fausses.
Vous pouvez. Vous devez appeler
avant votre json appel ajax. Et vous pouvez le définir à true après appel retuns ( si il y a d'autres usages de l'ajax sur la page si vous le souhaitez async )
$.ajax
(et à l'abréviation des wrappers ie$.getJSON
,$.get
, etc.) pour être synchrone. En outre, le documentation suggère même de ne pas utiliser cette: "Description: Définir des valeurs par défaut pour les futures requêtes Ajax. Son utilisation n'est pas recommandée."Je pense que vous avez tous les deux ont raison. La réponse plus tard fonctionne très bien mais comme son réglage d'une option de sorte que vous avez à faire ce qui suit:
Dans mon cas, Jay D est la droite. Je dois ajouter ceci avant l'appel.
Dans mon code précédent, j'ai ceci:
Il fonctionne à trouver. Puis-je changer pour
L'alerte n'est pas défini.
Si j'ajoute ces trois lignes, l'alerte montre à nouveau les données.
Je ne pense pas que vous pouvez définir cette option là. Vous devrez utiliser jQuery.ajax() avec les paramètres appropriés (essentiellement getJSON juste enveloppe appeler dans un plus facile de l'API, ainsi).
Rouler votre propre par exemple
Si vous avez juste besoin de
await
pour éviter de nidification code: