2017-05-02 7 views
0

나는 내 코드에서 리뷰를 작성하고 싶습니다. 매 초마다 실행되는 JavaScript/ajax 코드를 만들고 있습니다. 이제 내 코드는 다음과 같습니다. 대기열에 변경 사항이 있는지 확인합니다. 변경 사항이있을 경우 경고하고, 변경 사항이 없으면 계속 실행하여 계속 점검합니다. 경고하고 때로는 경고하지 않습니다.아약스가 변경 사항을 비교하면 변경 될 것입니다.

function check_getqueue(clinicID, userID) { 
var tmpCountQ = []; 
    $.ajax({ 
    url: siteurl+"sec_myclinic/checkingUpdates/"+clinicID+"/"+userID, 
    type: "POST", 
    dataType: "JSON", 
    success: function(data) { 
     for(var i=0;i<data.length;i++) { 
     tmpCountQ.push(data[i]['queue_id']); 
     }; 
     if(typeof lastCon[0] != "undefined") 
     { 
     for(j=0;j < tmpCountQ.length;j++) 
     { 
      if(tmpCountQ[j] != lastCon[j]) 
      { 
      $("#boxqueue").empty(); 
      alert("there is change"); 
      // refresh_afterdel(clinicID, userID); 
      lastCon[j] = tmpCountQ[j]; 
      } 
     } 
     } 
     else 
     { 
     lastCon = tmpCountQ; 
     } 
     // console.log("lastCon "+lastCon) 
     // console.log("tmpCountQ "+tmpCountQ); 
    } 
    }); 
} 

답변

-1

당신은 서버에 동기 호출을 보장하지 않습니다 및 지역 바르 그러므로 어떤 대기열의 요구입니다 FIFO를 보장하지 않는 한 모든 변수가 성공 또는 오류 기능에 선언하지 : 여기 내 코드입니다. 솔루션은 패키지 시퀀스 번호가있는 버퍼를 사용하여 데이터를 FIFO 큐로 구성하는 것입니다. 즉, 정수 ID가있는 JSON 객체의 JSON 배열로 반환되는 내용을 변경하는 것을 의미합니다. 데이터를 확인할 때 경고하기 전에 올바른 패킷을 보았는지 확인하십시오. 다음 패킷 경고가있을 때 서버의 대기열이 비어있을 때까지 반복하십시오.

+0

흠, 내 전체 코드가 잘못되었음을 의미합니까? –

+0

당신은 저를 1로 표시 할 수 있지만 동시성을 이해하지 못한다고 말하면서 -1을 만들지 만 그것이 진리입니다. ajax 호출로 다중 스레딩을 사용하는 비동기 시스템에서 동시성을 보장하려면 손을 흔들어야합니다. –

0

변수 j이 초기화되지 않았습니다. 그래서 그것은 같은 세계를 업데이 트하고있을 수 있습니다 j

function check_getqueue(clinicID, userID) { 
var tmpCountQ = []; 
    $.ajax({ 
    url: siteurl+"sec_myclinic/checkingUpdates/"+clinicID+"/"+userID, 
    type: "POST", 
    dataType: "JSON", 
    success: function(data) { 
     for(var i=0;i<data.length;i++) { 
     tmpCountQ.push(data[i]['queue_id']); 
     }; 
     if(typeof lastCon[0] != "undefined") 
     { 
     for(var j=0;j < tmpCountQ.length;j++) 
     { 
      if(tmpCountQ[j] != lastCon[j]) 
      { 
      $("#boxqueue").empty(); 
      alert("there is change"); 
      // refresh_afterdel(clinicID, userID); 
      lastCon[j] = tmpCountQ[j]; 
      } 
     } 
     } 
     else 
     { 
     lastCon = tmpCountQ; 
     } 
     // console.log("lastCon "+lastCon) 
     // console.log("tmpCountQ "+tmpCountQ); 
    } 
    }); 
} 
+0

감사합니다. 감사합니다. 시도해 보겠습니다. –

+0

시도해 보셨습니까? – Ninjaneer

+0

hello sir, 이제는 내 문제를 파악했습니다. 상황은 이것입니다. 먼저 lastCon과 tmpCountQ에는 값이 없습니다. 그런 다음 예제 1의 값을 추가하면 모두 1 값이므로 조건이 tmpCountQ [j]! = lastCon [j])는 만족하지 않습니다. 어떻게 편집 할 수 있습니까? –