JavaScript

[JavaScript] 콜백 함수

FRDYtheme 2022. 12. 2. 11:51

콜백함수 callback function

함수의 매개변수에 함수를 인수로 전달하는 것.

 

<script>

  function addFn(num1, num2) {
    num1(); // 인수로 받은 num1 함수를 호출
    num2(); // 인수로 받은 num2 함수를 호출
  }

  //화살표 함수
  const fn1 = () => console.log(`num1의 인수가 될 fn1 함수입니다.`);
  // 함수 선언문
  function fn2() {
    console.log(`num2의 인수가 될 fn2 함수입니다.`);
  }
  // 함수 표현식
  const fn3 = function() {
    console.log(`num2의 인수가 될 fn3 함수입니다.`)    
  }

  addFn(fn1, fn2);
  //addFn함수에 fn1, fn2 함수를 각 num1, num2에 인수로 넘겨 호출
  
  addFn(fn1, fn3);
  //addFn함수에 fn1, fn3 함수를 각 num1, num2에 인수로 넘겨 호출
</script>

 

자바스크립트 내장 함수

 

 

setTimeout(콜백함수, 시간);

일정 시간 후 한 번만 실행하는 자바스크립트 내장 함수로 '호출 스케줄링'이라고 한다.

 

 const working = () => {
  let study = `자바스크립트`;

  setTimeout(function() {
    console.log(`재미있는 ${study}`);
  }, 2000) // css: 1초 == 1s / js: 1초 == 1000
 }

 working();
 // 2초 후 '재미있는 자바스크립트' 출력

 

clearTimeout();

setTimeout()을 중단하는 함수로, setTimeout()을 변수에 대입해서 사용하고 그 식별자를 ()안에 작성하면 된다.

 

<!DOCTYPE html>
<html lang="ko">
  <head>
    <title>setTimeout()</title>
  </head>
  <body>
    <script>
      setTimeout(() => {
        console.log(`6초 후 실행`);
      }, 6 * 1000);

      const once = setTimeout(() => {
        console.log(`2초 후 실행`);
      }, 2000);

      // clearTimeout(); setTimeout() 중단
      clearTimeout(once); // once함수의 `2초 후 실행`은 실행되지 않음.
    </script>
  </body>
</html>

 

 


 

setInterval(콜백함수, 시간);

지정된 시간마다 함수 반복 실행

 

2초마다 n번째 실행되는 setInterval() 함수.

<!DOCTYPE html>
<html lang="ko">
  <head>
    <title>setInterval()</title>
  </head>
  <body>
    <script>
      let count = 1;
      setInterval(() => {
        console.log(`2초마다 ${count++}번째 실행`);
      }, 2000);
    </script>
  </body>
</html>

 

화살표 함수로 작성해서 콜백 함수로도 사용 가능하다.

const write = () => document.body.innerHTML += `<p>setInterval() 호출</p>`;
const isLoop = setInterval(write, 2000);

 

clearInterval()

setInterval()를 중단하는 함수.

 

const write = () => document.body.innerHTML += `<p>setInterval() 호출</p>`;
const isLoop = setInterval(write, 2000);


setTimeout(() => {
clearInterval(isLoop);
}, 5000);

'JavaScript' 카테고리의 다른 글

[JavaScript] JSON  (0) 2022.12.05
[JavaScript] 객체 (Object)  (0) 2022.12.02
[JavaScript] 중첩 함수/ 내부 함수  (0) 2022.12.02
[JavaScript] 즉시 실행 함수  (0) 2022.12.02
[JavaScript] 지역 변수 / 전역 변수 (scope)  (0) 2022.12.02