책 읽다가 코딩하다 죽을래

자바스크립트 callback함수 본문

코딩/자바스크립트

자바스크립트 callback함수

ABlue 2021. 8. 5. 19:50

callback 함수는 비동기 함수이다.

비동기 함수에 대해서 잘 모른다면 아래의 게시물부터 보고오자

 

자바스크립트 비동기[클릭]

 

 

콜백함수는 쉽게 말하자면 일을 다른 객체에게 시키고, 그 일이 끝날 때까지 기다리는 것이 아니라 그 객체가 나를 다시 부를 때까지 다른 할 일을 하고 있는 것이고,

 

정확히 말하자면 제어권을 객체에게 넘겨주는 것이다. 사용자가 계속 실행하기 귀찮으니 실행제어권을 객체에게 넘겨주는 것이다.

 

이 콜백함수는 비동기 처리를 하기 위한 패턴 중 하나이다.

 

 

setInterval(() => {
    console.log('1초마다 실행될 겁니다.');
}, 1000);

 

 

콜백함수의 예시는 setInterval이 있다.

setTimeout이 지정한 시간이 지나면 지정한 함수가 1회 실행된다면

setInterval은 지정한 시간이 지날 때마다 함수가 1회 실행된다.

 

그렇다고 setInterval만 무한루프를 도는 것이 아니라 앞에서 말했듯이 콜백함수는 비동기 처리 패턴 중 하나이다.

setInterval 아래에 코드가 있었다면 아래의 코드부터 실행된다.

 

위의 코드블럭은 1초마다 콘솔에 '1초마다 실행될 겁니다.' 가 찍힌다.

이러한 함수가 콜백함수이다.

1초마다 사용자가 함수를 

실행하기는 너무 번거로우니 setInterval 객체에게 지정한 함수를 제어할 수 있는 권한을 준 것이다.

 

콜백함수의 큰 특징은 다음 4가지가 있다.

 

 

  1. 다른 함수 A(setInterval)의 매개변수로 콜백함수 B(console.log)를 전달하면 A가 B의 제어권을 갖게 된다.
  2. 특별한 요청(bind, apply)이 없는 한 A에 미리 정해진 방식에 따라 B를 호출한다.
  3. 미리 정해진 방식이란, this에 무엇을 바인딩할지, 매개변수에는 어떤 값들을 지정할지, 어떤 타이밍에 콜백을 호출할지 등이다.
  4. 콜백은 함수이다.(메소드가 될 수 없다.)