이전 함수에서 이전 함수의 반환 값을 호출하려고 했지만 반환 값이 항상 비어 있었습니다. 나중에 몇 가지 정보를 살펴본 후 비동기 요청이 문제를 일으킨다는 것을 깨달았습니다. 예:
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; (비동기 실행)
그렇지 않으면 비동기적으로 실행해야 하는 다른 위치의 코드에 영향을 미칩니다.
위 내용은 $.getJSON 비동기 및 동기 요청 사용 예에 대한 자세한 설명의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!