> 웹 프론트엔드 > JS 튜토리얼 > Ajax 동기화 및 비동기 문제에 대한 간략한 분석 및 솔루션

Ajax 동기화 및 비동기 문제에 대한 간략한 분석 및 솔루션

亚连
풀어 주다: 2018-05-22 17:12:32
원래의
2018명이 탐색했습니다.

Ajax를 통해 백그라운드로 데이터를 보내고 받을 때 동기화, 비동기 문제가 자주 발생합니다. 이번 글에서는 Ajax 동기화와 비동기 문제에 대한 간략한 분석을 소개하겠습니다. 필요한 친구들은 참고하시면 됩니다

Ajax를 통해 백그라운드로 데이터를 보내고 받을 때 동기화와 비동기 문제가 자주 발생합니다. Ajax는 기본적으로 비동기식으로 로드되지만 때로는 동기화 또는 동기화 효과가 필요할 수 있으므로 두 가지 솔루션이 있습니다.

옵션 1: 실행할 콜백 함수에 특정 메서드를 넣습니다. 즉, 실행하기 전에 백그라운드에서 성공적으로 반환될 때까지 기다립니다.

예:

$.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);
}
});
로그인 후 복사

빨간색 부분은 데이터가 성공적으로 반환된 후에 실행되어야 합니다. if(resp.code==0){} 외부에 배치된 경우 ((그러나 $.getJSON(); 뒤에 배치됨) ) 존재합니다. 백그라운드에서 데이터가 반환되기 전에 코드의 빨간색 부분이 실행되었습니다.

방법 2: 표준 ajax 전송 방법을 사용합니다

 $.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});
}
  } 
 });
로그인 후 복사

참고: 이 방법은 다음과 같습니다. 부분 동기 전송 방법만 다른 전송에 영향을 미치며 더 안전하고 권장되는 방법입니다.

또 다른 방법이 있습니다:

// $.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;
로그인 후 복사
이 방법은 전역적이며 데이터 전송에 영향을 미치므로 권장되지 않습니다.

위 내용은 나중에 모든 사람에게 도움이 되기를 바랍니다.

자세한 설명: IE6의 문제 수정

CSS 스타일에 대한 자세한 설명 !important, *, _ 기호

이미지 적응형 레이아웃을 만들기 위한 패딩(CSS 백분율)

위 내용은 Ajax 동기화 및 비동기 문제에 대한 간략한 분석 및 솔루션의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

관련 라벨:
원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿