Maison  >  Article  >  interface Web  >  Quelle est la différence entre une implémentation synchrone et asynchrone utilisant Ajax ?

Quelle est la différence entre une implémentation synchrone et asynchrone utilisant Ajax ?

php中世界最好的语言
php中世界最好的语言original
2018-04-02 14:37:162006parcourir

Cette fois, je vais vous dire quelle est la différence entre utiliser Ajax pour obtenir une synchronisation et une implémentation asynchrone, et quelles sont les précautions concernant l'utilisation d'Ajax pour obtenir une synchronisation et une implémentation asynchrone. Ce qui suit est un cas pratique. , jetons un coup d'oeil.

Lors de l'envoi et de la réception de données en arrière-plan via ajax, des problèmes de synchronisation et asynchrones surviennent souvent. Étant donné que ajax est chargé par défaut de manière asynchrone, mais que parfois une synchronisation ou des effets de synchronisation sont nécessaires, il existe deux solutions.

Option 1 : placez certaines méthodes dans la fonction de rappel pour l'exécution, c'est-à-dire attendez que le succès revienne de l'arrière-plan avant de l'exécuter.

Exemple :

$.getJSON("/data-access/sens-config/IPandPortSel",{},function(resp){
if(resp.code==0){
$.each(resp.data,function(i,obj){
option_net_type += addOption(obj);
});
$("#edit-addr_id").append(option_net_type);
addr_idOld = $('#edit-addr_id').val(addr_id);
}
});

La partie rouge doit être exécutée une fois les données renvoyées avec succès, si elle est placée à l'extérieur de if(resp.code==0){} ( (Mais placé après $.getJSON();) Il y aura une situation où la partie rouge du code aura été exécutée avant que les données ne soient renvoyées depuis l'arrière-plan.

Méthode 2 : Utilisez la méthode de livraison ajax standard

 $.ajax({ 
  type : "post", 
  url : "/data-access/manufacturer/deleteBranch", 
  data : data, 
  async : false,//取消异步 
  success : function(resp){
if(resp.code==0){
if(ids.length>=currentListNum&&currentPage!=1){
currentPage = currentPage - 1;
}
var para = {
mypara :currentPage,
startPage : currentPage,
};
$('p.page-box').data('myPage').setOptions({data: para});
}
  } 
 });

Remarque : Cette méthode n'est qu'une méthode de transmission de synchronisation partielle et n'affectera pas les autres. transmissions. C'est un moyen relativement Sûr et recommandé

Il existe un autre moyen :

// $.ajaxSettings.async = false;
// $.getJSON("/data-access/ip-config/deleteBranch",data,function(resp){
// if(resp.code==0){
// if(ids.length>=currentListNum&&currentPage!=1){
// currentPage = currentPage - 1;
// }
// var para = {
// mypara :currentPage,
// startPage : currentPage,
// };
// $('p.page-box').data('myPage').setOptions({data: para});
// }
// });
// $.ajaxSettings.async = true;

Cette méthode est globale et n'est pas recommandée car elle affectera d'autres transmissions ajax

Je pense que vous maîtrisez la méthode après avoir lu le cas dans cet article. Pour des informations plus intéressantes, veuillez prêter attention à. autres sites Web php chinois.

Lecture recommandée :

Utiliser Blod pour télécharger la barre de progression ajax

Comment Ajax réalise l'urbanisation. liaison secondaire

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