Maison  >  Article  >  interface Web  >  Quelle est la différence entre l’ajax synchrone et asynchrone ? Introduction à la différence entre la synchronisation ajax et asynchrone

Quelle est la différence entre l’ajax synchrone et asynchrone ? Introduction à la différence entre la synchronisation ajax et asynchrone

不言
不言original
2018-10-11 10:42:0719726parcourir

Pour ajax, il faut savoir que ajax est principalement utilisé pour demander des données au backend du serveur dans la page front-end. Ajax est divisé en deux méthodes d'exécution : synchrone (async = false) et asynchrone (async = true) selon. à la valeur de async , alors, quelle est la différence entre les méthodes de requête synchrone et asynchrone de ajax ? Cet article vous donnera une analyse détaillée de la différence entre la synchronisation ajax et l'exécution asynchrone.

Tout d’abord, jetons un coup d’œil à Que sont les requêtes ajax synchrones et asynchrones ?

Requête asynchrone ajax :

La requête asynchrone est le moment où la requête est émise. Le navigateur peut continuer à faire n'importe quoi par Ajax. page. Le chargement et le fonctionnement de l'utilisateur équivalent à être sur deux lignes, chacune suivant son propre chemin sans s'influencer mutuellement. La valeur générale par défaut est vraie. Les requêtes asynchrones n'affectent pas du tout l'expérience utilisateur. Quelle que soit la durée de la requête, l'utilisateur se concentre sur l'exploitation d'autres contenus de la page et n'a pas envie d'attendre.

Par exemple :

$.ajax({  
     type:"POST", 
     url:"Venue.aspx?act=init", 
      dataType:"html", 
     success:function(result){  //function1()
       f1(); 
       f2();  
    } 
     failure:function (result) {  
      alert('Failed');  
     }, 
 } 
 function2();

Explication : Dans le code ci-dessus, lorsque le bloc ajax envoie une requête, il restera dans function1() et attendra le retour du serveur, mais en même temps (pendant ce processus d'attente), la réception exécutera function2().

Requête synchrone ajax :

Une requête synchrone signifie qu'une fois la requête en cours émise, le navigateur ne peut rien faire et doit attendez. Une fois la requête terminée et renvoyant les données, le code suivant sera exécuté, ce qui équivaut à une mise en file d'attente, c'est-à-dire que lorsque le code JS est chargé dans l'ajax actuel, tous les codes de la page cesseront de se charger et. la page sera dans un état d'animation suspendue. Lorsque cet ajax est exécuté, une fois terminé, il continuera à exécuter d'autres pages de codes pour libérer l'état d'animation suspendue (c'est-à-dire que lorsque ajax renvoie les données, les fonctions suivantes seront exécutées) .

Par exemple :

$.ajax({  
     type:"POST", 
     url:"Venue.aspx?act=init", 
     dataType:"html", 
     async: false,    success:function(result){  //function1()
       f1(); 
       f2(); 
     } 
    failure:function (result) {  
      alert('Failed');  
     }, 
 } 
 function2();

Explication : Dans le code ci-dessus, lorsque asyn est défini sur false, la requête ajax est synchronisée à ce moment, c'est-à-dire que le bloc ajax envoie la requête à ce moment-là, après cela, il attendra function1() et n'exécutera pas function2() tant que la partie function1() ne sera pas terminée.

Après avoir lu la signification des requêtes synchrones et asynchrones ajax, examinons la différence entre requêtes synchrones ajax et requêtes asynchrones.

La différence entre une requête synchrone ajax et une requête asynchrone :

En mode asynchrone :

Après avoir envoyé la requête en utilisant AJAX, il se peut qu'il y ait encore du code à exécuter. À l'heure actuelle, le serveur n'a peut-être pas répondu à notre demande pour diverses raisons, mais comme nous utilisons l'exécution asynchrone, le code restant dans toutes les fonctions contenant le code de requête AJAX continuera à s'exécuter. Si nous transmettons le résultat de la requête à une autre fonction JS pour traitement, ce sera comme si deux threads s'exécutaient en même temps.

En mode synchrone :

Après avoir utilisé AJAX pour envoyer la requête, il reste encore du code à exécuter plus tard, et nous remettons également le serveur réponse à une autre fonction JS à traiter, mais la situation d'exécution du code à ce moment est la suivante : lorsque le serveur ne répond pas ou que la fonction JS qui traite le résultat de la réponse n'a pas traité et terminé le retour, le code restant de la fonction contenant la requête le code ne peut pas être exécuté. Tout comme un seul thread, il entre dans l'état de blocage après l'émission de la requête, et le code restant ne continuera pas à s'exécuter jusqu'à ce qu'il atteigne l'état bloqué.

Ce qui précède représente l'intégralité du contenu de cet article. Pour un contenu plus passionnant, vous pouvez suivre le site Web php chinois ! ! !

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn