Maison >développement back-end >tutoriel php >Explication détaillée de la différence entre les requêtes synchrones et les requêtes asynchrones

Explication détaillée de la différence entre les requêtes synchrones et les requêtes asynchrones

小云云
小云云original
2018-03-21 13:12:457800parcourir

Expliquez d'abord les concepts de synchronisation et d'asynchronisme
La synchronisation fait référence à la méthode de communication dans laquelle l'expéditeur envoie des données et attend que le destinataire renvoie une réponse avant d'envoyer le prochain paquet de données. Asynchrone fait référence à la méthode de communication dans laquelle l'expéditeur envoie des données, attend que le destinataire renvoie une réponse, puis envoie le paquet de données suivant.
Concepts de communication synchrone et de communication asynchrone
La communication synchrone nécessite que les deux parties communiquent à la même fréquence d'horloge et se coordonnent avec précision, garantissant une synchronisation précise de l'expéditeur et du récepteur en partageant une seule source d'horloge ou d'impulsion de synchronisation. Haute efficacité ;
La communication asynchrone ne nécessite pas de synchronisation des deux parties. L'expéditeur et le destinataire peuvent utiliser leurs propres sources d'horloge. Les deux parties suivent un protocole de communication asynchrone, utilisant des caractères comme unités de transmission de données. L'intervalle de temps pendant lequel l'expéditeur transmet les caractères est incertain. , et l'efficacité de la transmission Moins efficace que la transmission synchrone.
Choix de communication de l'utilisateur pour appeler les services WEB : synchrone ou asynchrone.
Les utilisateurs peuvent implémenter des appels de service de manière synchrone ou asynchrone. Du point de vue du consommateur, la différence entre les deux approches est la suivante :
Synchrone : le consommateur appelle le service via un seul thread ; ce thread envoie la requête, bloque pendant l'exécution du service et attend une réponse.
Asynchrone : un consommateur appelle un service via deux threads ; un thread envoie la demande, tandis qu'un thread distinct reçoit la réponse.
Les termes synchrone et asynchrone sont souvent confondus avec séquentiel et simultanéité. Les deux derniers termes se rapportent à l'ordre dans lequel les tâches individuelles doivent être exécutées, tandis que synchrone et asynchrone se rapportent à la manière dont un thread exécute une tâche unique (comme appeler un seul service). Un bon moyen de comprendre la différence entre les appels synchrones et asynchrones est de considérer les conséquences d'une récupération après incident :
Synchrone - si un consommateur plante en bloquant pendant que le service est en cours d'exécution, lorsqu'il redémarre, il ne pourra pas se reconnecter au service en cours. appel, donc la réponse est perdue. L'utilisateur doit répéter le processus d'appel et espérer qu'il ne plante pas cette fois.
Asynchrone - Si le consommateur plante en attendant une réponse après l'envoi d'une requête, lorsqu'il redémarre, il peut continuer à attendre la réponse, afin que la réponse ne soit pas perdue.
La récupération après incident n'est pas la seule différence entre les appels synchrones et asynchrones, mais si vous essayez de déterminer dans quel sens un appel va dans un sens, réfléchissez à la façon dont chacun gère la récupération après incident, ce qui peut souvent vous donner une bonne réponse.
++++++++++++++++++++++++++++++++++++++++++++ ++++++ +++++++
Lors de l'utilisation d'Ajax dans le développement Web Java, il est important de bien comprendre la différence entre les modèles de communication synchrone et asynchrone (voir Ressources). Le manque de prise en charge des modèles de communication asynchrones a des implications sur le développement côté client, l'intégration avec les frameworks Web, l'utilisation de la bibliothèque de balises, l'utilisation de l'IDE et le comportement des threads.
Dans le modèle de communication requête/réponse synchrone, c'est toujours le navigateur (par opposition à un serveur web, un serveur d'applications ou une application web) qui initie la requête (via l'internaute). Le serveur Web, le serveur d'applications ou l'application Web répond ensuite à la demande entrante. L'utilisateur ne peut pas continuer à utiliser le navigateur pendant le traitement du couple requête/réponse synchrone.
Dans le modèle de communication requête/réponse asynchrone, la communication du navigateur (via l'utilisateur Web) vers le serveur Web, le serveur d'applications ou l'application Web (et vice versa) est découplée. Lors du traitement des paires requête/réponse asynchrone, les internautes peuvent continuer à utiliser le navigateur pendant que la requête asynchrone en cours est en cours de traitement. Une fois le traitement de la demande asynchrone terminé, la réponse asynchrone est communiquée (du serveur Web, du serveur d'applications ou de l'application Web) à la page client. Généralement, l'appel n'a aucun impact sur les utilisateurs Web pendant ce processus ; ils n'ont pas besoin d'attendre une réponse.
La soumission de données dans Jquery ajax peut être effectuée de manière synchrone ou asynchrone 1. Quelle est la différence entre synchrone et asynchrone ? , 2. Dans quelles circonstances est-il utilisé ? Synchrone : Soumettre la requête ->Attendre le traitement du serveur ->Après traitement et retour, le navigateur client ne peut rien faire pendant cette période
Asynchrone : La requête est déclenchée par un événement ->Traitement du serveur (c'est-à-dire le le navigateur peut encore faire autre chose) -> Traité 1. Ma compréhension : 1. Détermination : vous ne pouvez faire qu'une seule chose pour le moment, et les autres choses doivent attendre que la chose en cours soit terminée avant de pouvoir continuer avec la suivante chose. 2. Sans enthousiasme : vous pouvez faire plusieurs choses en même temps : votre main gauche appuie sur la barre d'espace, votre main droite peut continuer à appuyer sur la souris et vos yeux doivent regarder l'écran en même temps, ce qui est très dur. 2. Veuillez consulter le script suivant : function

ValidateClick()
{ var areaNo=$("#<%=drpList.ClientID %>").val(); if(areaNo) { alert("请选择"); return false; } $.ajax({
cache:"False",
type:"POST", (A)//async: false, 【(A)】
url:"Validate.ashx",
data:$("#form1").serialize(), 
success:function(o)
{ 
if(o=="ERROR") { alert("输入错误!"); return false;} 
else if(o=="OK")
{ alert("正确!");return true; } 
else
{ alert("其他错误!"); return false;}
},
error:function(xhr, ajaxOptions, thrownError)
{ alert("网络异常,稍后重试!"); return false; }
}); // 【(B) 】 //alert("这里");return true;}

At (A) : la valeur par défaut n'est pas vraie, ce qui signifie que la transmission asynchrone est utilisée. Lorsque async : true : nous utilisons POST pour soumettre les données à. l'url Après avoir entré la page, la méthode ou la fonction en [(B)] sera exécutée en même temps. Que le résultat ait été renvoyé en (A), (B) a été exécuté lorsque le résultat est renvoyé. dans (A), il sera exécuté selon l'invite if A spécifiée, lorsque async: false: À ce moment, vous devez attendre que le résultat soit renvoyé en (A), puis exécuter l'instruction de jugement if. Une fois le jugement terminé, exécutez la fonction en (B).

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