Maison >interface Web >Questions et réponses frontales >Quelle est la différence entre la synchronisation ajax et asynchrone
Différence : 1. En synchronisation, un thread doit attendre que le thread précédent termine son exécution avant de pouvoir commencer à s'exécuter, tandis qu'en mode asynchrone, si un thread est en cours d'exécution, le thread suivant peut commencer à s'exécuter sans attendre qu'il se termine. executing; 2. La synchronisation est une opération à un seul thread , L'asynchrone est une opération multithread 3. L'asynchrone est plus efficace que la synchronisation.
L'environnement d'exploitation de ce tutoriel : système Windows 7, JavaScript version 1.8.5, ordinateur Dell G3.
Requête asynchrone ajax :
Une requête asynchrone signifie que pendant que la requête est effectuée, le navigateur peut continuer à faire n'importe quoi. L'envoi de la requête par Ajax n'affectera pas le chargement de la page et le fonctionnement de l'utilisateur, ce qui équivaut à. deux lignes. Chacun suit son propre chemin sans s'influencer. 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. Il doit attendre que la requête soit terminée et que les données soient renvoyées avant que le code suivant ne soit exécuté, ce qui est équivalent. à la 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. Une fois l'ajax exécuté, les autres pages de codes continueront. à exécuter pour libérer l'état d'animation suspendu (c'est-à-dire que lorsque ajax renvoie les données, la page sera suspendue).
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, c'est-à-dire qu'une fois que le bloc ajax a envoyé la requête à ce moment, il attendra dans la fonction1(. ), function2() ne sera pas exécutée tant que la partie function1() n'est pas exécutée.
Après avoir lu la signification des requêtes ajax synchrones et asynchrones, examinons la différence entre les requêtes ajax synchrones et les requêtes asynchrones.
La différence entre les requêtes synchrones ajax et les requêtes asynchrones :
La synchronisation signifie qu'un thread doit attendre la fin de l'exécution du thread précédent avant de pouvoir commencer l'exécution. La synchronisation peut être considérée comme une opération à un seul thread. Tant que le client le demande, avant que le serveur n'ait aucune information de retour, il est dans un état de blocage de thread.
Asynchrone signifie que lorsqu'un thread est en cours d'exécution, le thread suivant peut démarrer l'exécution sans attendre la fin de son exécution. L'asynchrone est définitivement multi-thread. Lorsque le client le demande, d'autres threads peuvent être exécutés, et ce thread est stocké dans sa file d'attente et exécuté de manière ordonnée.
L'asynchrone est plus efficace que le synchrone. Si les données sont partagées entre les threads, la synchronisation doit être utilisée !
En mode asynchrone :
Après avoir envoyé la requête en utilisant AJAX, il se peut que du code doive être exécuté. À 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 qui doit être exécuté plus tard. Nous transmettons également la réponse du serveur à une autre fonction JS pour traitement, mais la situation d'exécution du code est à . cette fois-ci, c'est : lorsque le serveur ne répond pas ou que la fonction JS qui traite le résultat de la réponse n'a pas été traitée et renvoyée, le code restant de la fonction contenant le code de requête ne peut pas être exécuté. Tout comme un seul thread, il entre dans l'état de blocage après l'envoi de la requête, et le code restant ne continuera pas à s'exécuter jusqu'à ce qu'il touche l'état de blocage.
【Recommandation de tutoriel connexe : Tutoriel vidéo AJAX】
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!