2013-10-03 2 views
0

서버 연결 상태를 확인하는 함수가 있습니다. 5 초마다 checkOnline을 실행하고 싶습니다. 연결이 끊어지고 계속 실패하면 오류 메시지에 대한 fadeIn도 계속 실행됩니다 (깜박임 효과 생성). 페이드 기능이 한 번만 실행되고 실패하면 연결을 계속 점검 할 수 있도록 어떻게 변경할 수 있습니까?함수의 일부를 한 번 실행하지만 5 초마다 나머지 함수를 실행합니다.

$(function() { 

var url = 'https://examplesite.com/'; 

function checkOnline() { 
    $.get(url).done(function() { 
     window.location = url; 
    }).fail(function() { 
     $('.errortext').hide().fadeIn(500); 
     $('.loadingtext').fadeOut(500); 
    }); 
}; 

window.setInterval(function() { checkOnline(); }, 5000); 
setTimeout(function() { checkOnline(); }, 2000); 

}); 
+5

"오류 메시지를 이미 보았습니다"라는 변수를 처음으로 "true"로 설정하십시오. 변수가 이미 'true'일 때 로직을 수행하지 마십시오. –

+0

연결이 있다고 가정하면 페이지를 다시로드하거나 5 초마다 'url'을 다시 방문하는 것처럼 보입니다. 그것은 의도 된 행동입니까? 나는 그때 당신이 손실 후 연결이 재개 될 때 사건을 처리 할 필요가 없다면 사촌에게 요청한다. –

+0

5 초마다 연결을 확인하기 위해 서버를 핑 (ping)합니다. –

답변

0

페이드 효과가 이미 실행되었는지 여부를 추적하십시오. 그런 다음 페이드를 실행하기 전에 확인하십시오. 여기 fadeFlag라는 변수를 사용하는 예이다 :

var fadeFlag = false; 

function fadeOnce() { 
    // Has fade happened already? 
    if (fadeFlag === false) { 
     // No. Then do the effects 
     $('.errortext').hide().fadeIn(500); 
     $('.loadingtext').fadeOut(); 
     fadeFlag = true; 
    } 
} 

function checkOnline() { 
    $.get(url).done(function() { 
     window.location = url; 
    }).fail(function() { 
     // Try the fade effects 
     fadeOnce(); 
    }); 
}; 

처음 fadeOnce() 호출되어, 상기 효과를 실행 한 다음에 truefadeFlag를 설정한다. 다음 번에는 fadeFlagtrue 인 것으로 간주되므로 아무 것도 수행하지 않습니다.

+0

대단하다. 멋진 작품! 고맙습니다 –

관련 문제