본문 바로가기
PROGRAMING📚/WEB📑

[WEB]JavaScript - setTimeout / setInterval 사용하기

별찌루 2023. 9. 15.
728x90
반응형

setTimeout() / setInterval() 사용하기

 

자바스크립트에서 사용하는 타이머로 사용하는 대표적인 함수에는

seTimeout()와 setInterval() 함수를 사용한다

setTimeOut

setTimeout 함수는 코드를 실행 할때 바로 시작하지 않고 

기다렸다가 함수를 실행 할 때 사용하는 함수이다.

사용하는 방법은 setTimeout(function(){ // Code here}, 지연시간) 

의 형식으로 적어주면 된다.

<script>
     setTimeout(function () {
        document.querySelector(".alert").style.display = "none";
      }, 5000);
</script>
<script>
     setTimeout(function () {
        $(".alert").hide();
      }, 5000);
</script>

 

setTimeout(funtion(){}) 이렇게 사용하지 않고

함수를 따로 만들었을 경우, 그 함수의 이름만 적어주면된다.

 

지연시간은 밀리세컨드 단위로 설정 해야한다.

예를들어 지연시간 1000은 1초, 10000은 10초를 의미한다.

위코드에서는 지연시간을 5000 로 설정하였고 이것은 5초동안 지연하라는 의미를 가진다.

 

    <script>
      setTimeout(call, 5000);
      function call() {
        console.log("call() 실행");
      }
    </script>

함수명을 call로 선언했을 때

call 만 적어주고 ()괄호는 작성하면 동작을 하지 않는다

 

setTimeout()은 비동기 함수로서, 함수 스택의 다른 함수 호출을 막지 않는다

 setTimeout() 은 호출 순서에 관계 없이 동시에 호출한다

 

setTimeout(() => {
  console.log("첫 번째 메시지");
}, 5000);
setTimeout(() => {
  console.log("두 번째 메시지");
}, 3000);
setTimeout(() => {
  console.log("세 번째 메시지");
}, 1000);

// 콘솔 출력:

// 세 번째 메시지
// 두 번째 메시지
// 첫 번째 메시지

 

첫 번째 메세지 호출 하는데 '5초' 

두 번째 메세지 호출 하는데 '3초'

세 번째 메세지 호출 하는데 '1초'

 

코드를 보면 5초 후에 '첫 번째 메세지'가 나오고

그다음에 3초 후에 '두 번째 메세지' 가 나올 것 같지만

 

결과 값에서는

세 번째 메시지(1초)두 번째 메시지(3초)첫 번째 메시지(5초)

지연되고 바로 값이 나온다 

 

 

 

setInterval

 

함수를 몇 밀리초 마다 반복적으로 호출 하려고 할 때 사용을 한다

setInterval( function(){ // Code here}, 반복 주기) 

 

반복 주기도 seTimeout 과 동일하게 밀리세컨드 단위로 설정해준다

반복주기 1000은 1초에 한번씩 함수를 호출해준다는 것을 의미하고

10000은 10초에 한번씩 함수를 호출 해준다는 것을 의미한다.

 

    <script>
       setInterval(() => {
         console.log("interval 실행");
       }, 1000);
    </script>

clearTimeout() 을 사용하면 타이머를 멈출 수 있다.

<body>
    <div class="alert alert-danger">5초 후 사라짐</div>
     <script>
      let sec = 5;
      setTimeout(() => {
        console.log("setTimeout");
      }, 2000);
      var timer = setInterval(() => {
        if (sec > 0) {
          sec -= 1;
          $(".alert").html(sec + "초 후 사라짐");
        } else {
          $(".alert").hide();
          console.log("timer " + sec);
          clearTimeout(timer);
        }
      }, 1000);
    </script>
  </body>

 

 

 

 

728x90
반응형

댓글