재귀함수사용시 중간중간 호출 누락되는 경우?...

재귀함수사용시 중간중간 호출 누락되는 경우?...

QA

재귀함수사용시 중간중간 호출 누락되는 경우?...

본문

 

setTimeout으로 5초마다 ajax을 통해 데이터를 받아오고 1초마다 테이블을 그리고 있습니다.


setTimeout{(
  i++;
  if( i == 5 ) 
    i=0;
    $.ajax("Data~");
  else
   DrawTable();
),1000}

이런식으루요, 그러면 이전에 가져온 데이터와 지금가져온 데이터  텀이 5초로 되야하는데
중간에 한번씩 10초 텀이 생깁니다. 

아마 ajax통신이 실행되기전에 다음 ajax를 호출하다 보니 이전 호출이 취소되고?
밀리는 현상이 있는거 같은데요 이런건 어떻게 해결해야하나요 ㅠㅠ?

동기호출하는 방법도해보고 readystate를 사용해서 응답이 완료되면 다시 호출하는 법도 해봤지만 
안되더라구요.... 호출이 되기전에 다음호출이 진행되는것 같은데 

이런 문제를 뭐라고하며 어떻게 해결해야 하나요 ㅠㅠ  

이 질문에 댓글 쓰기 :

답변 1

저의경우는 이렇게 처리합니다.


var run_status=0; //ajax가 동작중인지 전역변수를 하나 만들어줍니다.
 
 
 
function test_ajax() {
 
if(run_status==0) { //전역변수의 값이 0일때만 ajax를 돌립니다
 
run_status=1;
//ajax가 동작을 시작할때 전역변수의 값을 1로 만들어 줍니다.
 $.ajax({
        type:"GET",
        url:url,
	  cache:false,
        success:function(args){
run_status=0;  
//정상적으로 동작이 끝나면 전역변수를 0으로 만들어 줍니다.
 },
      error: function() {
         run_status=0;
//오류가 나도 다시 돌아야하기때문에 전역변수를 0으로 만들어 줍니다.
      } 
    }); 
 
}
}

 

이렇게 해주시면 AJAX동작이 완료되기전에 다시 AJAX가 재 호출되진 않을거에요.

작성한것이므로 구문상 오류는 있을수 있습니다.

핵심은 특정 동작시 전역변수의 상태값으로 진행을 막거나 진행을 시키는 겁니다.

 

 

답변을 작성하시기 전에 로그인 해주세요.
전체 13
QA 내용 검색

회원로그인

(주)에스아이알소프트 / 대표:홍석명 / (06211) 서울특별시 강남구 역삼동 707-34 한신인터밸리24 서관 1404호 / E-Mail: admin@sir.kr
사업자등록번호: 217-81-36347 / 통신판매업신고번호:2014-서울강남-02098호 / 개인정보보호책임자:김민섭(minsup@sir.kr)
© SIRSOFT