>웹 프론트엔드 >JS 튜토리얼 >$.getJSON 비동기 및 동기 요청 사용 예에 ​​대한 자세한 설명

$.getJSON 비동기 및 동기 요청 사용 예에 ​​대한 자세한 설명

伊谢尔伦
伊谢尔伦원래의
2017-07-21 14:56:332057검색

이전 함수에서 이전 함수의 반환 값을 호출하려고 했지만 반환 값이 항상 비어 있었습니다. 나중에 몇 가지 정보를 살펴본 후 비동기 요청이 문제를 일으킨다는 것을 깨달았습니다. 예:


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

나중에 인쇄된 배열 순서가 항상 비어 있음을 발견했습니다. 다음은 수정된 코드입니다.


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; (비동기 실행)

그렇지 않으면 비동기적으로 실행해야 하는 다른 위치의 코드에 영향을 미칩니다.


rreee

위 내용은 $.getJSON 비동기 및 동기 요청 사용 예에 ​​대한 자세한 설명의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.