programing

간격이 실행 중인지 확인하고 그 반대의 경우

oldcodes 2023. 9. 6. 22:16
반응형

간격이 실행 중인지 확인하고 그 반대의 경우

그래서 저는 기본적인 인증이 가능한 웹 앱을 가지고 있습니다.

로그인하면 Interval이 설정됩니다.

$("#login").click(function(e) { 
var interval = setInterval(function(){myFunction();}, 2000); });

그런 다음 로그아웃할 때 간격을 중지해야 합니다.

$("#logout").click(function(e) { 
if(typeof interval !== 'undefined') clearInterval(interval); });

하지만 작동하지 않습니다. 인터벌이 존재하는지 확인하는 방법이 잘못된 것 같습니다... 로그인할 때 실행되도록 인터벌을 설정할 수는 있지만 로그아웃 버튼을 클릭하면 중지/삭제해야 합니다...

추신. 2초마다 자동으로 "내 기능"을 확인하기 위해 인터벌을 사용하고 있지만 인터벌 없이 이를 수행할 수 있는 다른 방법이 있을까요? thx

당신의.interval변수는 두 함수 모두에서 사용 가능한 상위 범위에서 선언해야 합니다.현재 사용 중인 것처럼 이벤트 핸들러 함수의 특정 호출 내에만 존재하는 로컬 변수입니다.따라서 다음 이벤트 핸들러가 호출되면 해당 이전 변수는 더 이상 존재하지 않습니다.로그인 시 클릭이 연속되지 않도록 보호해야 할 수도 있습니다.

var interval;
$("#login").click(function(e) { 
    if (!interval) {
        interval = setInterval(function(){myFunction();}, 2000); 
    }
});

$("#logout").click(function(e) { 
    clearInterval(interval); 
    interval = null;
});

그리고 당신이 확인할 필요는 없어요.intervalundefined. 그냥 전화하면 됩니다.clearInterval()그 위에 그리고clearInterval()당신이 통과시키는 잘못된 논쟁으로부터 보호해 줄 것입니다

다음은 두 클릭 이벤트에 대해 인터벌 변수가 글로벌 범위에 있어야 하는 간단한 예입니다.

<!DOCTYPE html>
<html>
<head>
    <title></title>
      <script src="//ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js"></script>  
      <script type="text/javascript">
      $(document).ready(function(){
            function myFunction(){
                var d = new Date();
                var t = d.toLocaleTimeString();
                document.getElementById("demo").innerHTML = t;
            }
            var interval;

            $("#start").click(function(){
                interval = setInterval(function(){
                        myFunction();
                },2000);

            });

            $("#stop").click(function(){
                clearInterval(interval);
            });


      });
      </script>
</head>
<body>
    <p id="demo"></p>
    <button id="start">Start</button>
    <button id="stop">Stop</button>
</body>
</html>

언급URL : https://stackoverflow.com/questions/34805296/check-if-an-interval-is-running-and-viceversa

반응형