首頁  >  文章  >  web前端  >  $.getJSON非同步和同步請求用法實例詳解

$.getJSON非同步和同步請求用法實例詳解

伊谢尔伦
伊谢尔伦原創
2017-07-21 14:56:332017瀏覽

之前的一個函數想呼叫上一個函數的回傳值,但是它的回傳值一直是空,後來翻了一些資料才明白是異步請求在作怪,不多說,看例子:


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; 
}

後來發現列印的陣列order 一直為空,以下是改正後的程式碼:


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; 
}

在循環之前加上一個$.ajaxSettings.async = false;    表示同步執行,這樣他就會按照順序執行了。

同時執行多個$.getJSON() 資料混亂的問題的解決

在執行之前加上$.ajaxSettings.async = false;    (同步執行)

執行你的程式碼之後及時恢復為$.ajaxSettings.async = true;(非同步執行)

不然影響別的地方的需要非同步執行的程式碼。


$.ajaxSettings.async = false;

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

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

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

......

$.ajaxSettings.async = true;

以上是$.getJSON非同步和同步請求用法實例詳解的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn