2011-07-28 6 views
0

내 웹 페이지에 자동 새로 고침 기능이 있습니다. 자동 새로 고침은 타이머를 사용하여 구현됩니다.브라우저의 경쟁 조건 방지 JavaScript 페이지 새로 고침

GInterValId = window.setInterval("AutoRefresh()",interval); 

사용자는 페이지의 일부 버튼을 클릭하여 일부 작업을 수행 할 수도 있습니다. 자동 새로 고침 기능과 사용자 작업으로 경쟁 조건이 생성됩니다.

두 가지 작동 (자동 새로 고침 및 버튼 작동)이 동시에 일어나지 않도록하고 싶습니다.

어떻게하면됩니까? 이것에 대해

+2

왜 자동 새로 고침을합니까? 똥이 아닌 것을 재 설계하십시오 – Raynos

+0

이외 : setInterval 및 setTimeout에 문자열을 전달하지 마십시오. 함수를 직접 전달하여 악의적 인 평가를 사용하지 마십시오 :'setInterval (AutoRefresh, interval)' – hugomg

+0

@missingno - 함수에 대한 직접 참조를 전달할 수있는 문자열을 setInterval에 전달하는 것은 어리석은 일입니다. 그것에 대한 악이며 위험이나 위험이 없습니다. – jfriend00

답변

3

무슨 일이 :

busy = false; 

function AutoRefresh() { 
    if(busy) return; 
    busy = true; 
    ... 
    ... 
    ... 
    busy = false; 
} 

function ButtonOperation() { 
    if(busy) return; 
    busy = true; 
    ... 
    ... 
    ... 
    busy = false; 
} 
0

나는 페이지가 자동 새로 고침되기 전에 버튼 조작이 완료 될 때까지 당신이 실제로 일어날하려는 것은 추정. 어떤 경우에는 버튼 조작 함수가 작업을 대기열에 추가 한 다음 새로 고침을 수행하기 전에 AutoRefresh 함수가 작업을 실행하도록합니다.