Maison >interface Web >js tutoriel >Explication détaillée des exemples d'utilisation de requêtes asynchrones et synchrones $.getJSON

Explication détaillée des exemples d'utilisation de requêtes asynchrones et synchrones $.getJSON

伊谢尔伦
伊谢尔伦original
2017-07-21 14:56:332063parcourir

Une fonction précédente voulait appeler la valeur de retour de la fonction précédente, mais sa valeur de retour était toujours vide. Plus tard, après avoir parcouru certaines informations, j'ai réalisé que les requêtes asynchrones causaient des problèmes. Je n'y vais pas. dans les détails, mais regardez l'exemple :


function get_no_order_array() { 
  var order_info = show_order(); 
  var order = []; 
  
  $.getJSON("../JSON/customers.json", function (date) { 
 
    date["man"].forEach(function (person) { 
      if (order_info.k_obj[person] == undefined) { 
        order.push(person); 
      } 
    }) 
  }); 
 
  return order; 
}

Plus tard, j'ai découvert que l'ordre du tableau imprimé était toujours vide. Ce qui suit est corrigé. code :


function get_no_order_array() { 
  var order_info = show_order(); 
  var order = []; 
  $.ajaxSettings.async = false;//在执行之前加$.ajaxSettings.async = false;  (同步执行) 
  $.getJSON("../JSON/customers.json", function (date) { //<span style="line-height: 1.5;">$.getJSON不懂的话可以看一下我之前的博客,或是专门学习一下  “JSON”</span>


date["man"].forEach(function (person) { 
      if (order_info.k_obj[person] == undefined) { 
        order.push(person); 
      } 
    }) 
  }); 
  $.ajaxSettings.async = true;//执行你的代码之后及时恢复为$.ajaxSettings.async = true; (异步执行) 
  return order; 
}

Ajoutez $.ajaxSettings.async = false avant la boucle pour indiquer une exécution synchrone, donc ; qu'il sera exécuté dans l'ordre.

Solution au problème de confusion des données provoquée par l'exécution de plusieurs $.getJSON() en même temps

Ajouter $.ajaxSettings.async = false avant l'exécution (exécution synchrone)

Exécution Votre code sera restauré à $.ajaxSettings.async = true dans le temps; (exécution asynchrone)

Sinon, cela affectera le code à d'autres endroits qui doit être exécuté de manière asynchrone.


$.ajaxSettings.async = false;

$.getJSON(url, data, function(data){ });

$.getJSON(url, data, function(data){ });

$.getJSON(url, data, function(data){ });

......

$.ajaxSettings.async = true;

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