Que fait «async: false» dans jQuery.ajax ()?

Plus précisément, en quoi diffère-t-il de la valeur par défaut ( async: true )?

Dans quelles circonstances devrais-je définir explicitement async sur false , et cela a-t-il quelque chose à voir avec la prévention d’autres événements sur la page?

Cela a-t-il quelque chose à voir avec la prévention d’autres événements sur la page de tirer?

Oui.

Si vous définissez async sur false, l’instruction que vous appelez doit être terminée avant que l’instruction suivante de votre fonction puisse être appelée. Si vous définissez async: true, cette instruction commencera son exécution et l’instruction suivante sera appelée, que l’instruction asynchrone soit ou non terminée.

Pour plus d’informations, voir: jQuery ajax success étendue de la fonction anonyme

  • async:false = Code en pause . (Autre code en attente de finalisation)
  • async:true = Code continué . (Rien n’est suspendu. Un autre code n’attend pas .)

Aussi simple que cela.

Async:False conservera l’exécution du code de repos. Une fois que vous obtenez la réponse de ajax, alors seulement, le rest du code sera exécuté.

Si vous désactivez la récupération asynchrone, votre script sera bloqué jusqu’à ce que la demande soit remplie. C’est utile pour exécuter une séquence de requêtes dans un ordre connu, même si je trouve que les rappels asynchrones sont plus propres.

De

https://xhr.spec.whatwg.org/#synchronous-flag

Synchronous XMLHttpRequest en dehors des employés est en train d’être supprimé de la plate-forme Web car il a des effets néfastes sur l’expérience de l’utilisateur final. (Il s’agit d’un long processus qui prend de nombreuses années.) Les développeurs ne doivent pas transmettre de faux pour l’argument asynchrone lorsque l’environnement global JavaScript est un environnement de document. Les agents utilisateurs sont vivement encouragés à avertir d’une telle utilisation dans les outils de développement et peuvent expérimenter la génération d’une exception InvalidAccessError lorsqu’elle se produit. La future direction consiste à n’autoriser que XMLHttpRequests dans les threads de travail. Le message est destiné à être un avertissement à cet effet.

Un cas d’utilisation est de faire un appel ajax avant que l’utilisateur ferme la fenêtre ou quitte la page. Cela reviendrait à supprimer certains enregistrements temporaires de la firebase database avant que l’utilisateur puisse naviguer vers un autre site ou fermer le navigateur.

  $(window).unload( function(){ $.ajax({ url: 'your url', global: false, type: 'POST', data: {}, async: false, //blocks window close success: function() {} }); }); 

Si vous définissez async sur false, les instructions suivant la requête ajax devront attendre la fin de la requête. Vous trouverez ci-dessous un cas où il faut définir async sur false pour que le code fonctionne correctement.

 var phpData = (function get_php_data() { var php_data; $.ajax({ url: "http://somesite/v1/api/get_php_data", async: false, //very important: else php_data will be returned even before we get Json from the url dataType: 'json', success: function (json) { php_data = json; } }); return php_data; })(); 

L’exemple ci-dessus explique clairement l’utilisation de l’ async: false

En le définissant sur false, nous nous sums assurés qu’une fois que les données sont récupérées de l’ url , seulement après cela, retourne php_data; est appelé