JS 콜백함수를 이용한 프로그램과 단점

2023. 8. 15. 21:03카테고리 없음

<콜백함수란!!>

js에서 함수는 ==> 객체입니다.

함수의 파라미터로서 객체를 전달할 수 있기에

함수의 피라미터로서 다른 함수에 전달하고 감싼 함수의 내부에서 그 함수를 호출합니다.

 

아래의 코드를 보면

function print(callback) {
	callback();
 }

다른 함수를 피라미터로 받아 내부에서 그것을 호출하고 있습니다.

이러한 경우가 콜백입니다.

즉 다른 함수의 피라미터로써 전달되는 함수가 콜백함수입니다.

 

 

<콜백 함수가 필요한 이유>

js는 위에서 아래로 순차적으로 실행하지만,

특정한 행위가 일어났을 때 순차적으로 실행되지 않을 때가 발생합니다.

이런 걸 비동기 프로그래밍이라고 하는데

콜백은 위와 같은 경우에서 함수가 실행되지 않는 것을 보장합니다.

즉 태스크가 끝나기 전에 함수가 실행되지 않는다는 것입니다.

 

<콜백함수로 작성한 간단한 프로그램>

여기서 ingang과 goodgood함수가 콜백함수인 것입니다.!!

 

function checkGang(c, a, good) {
  c < 2 ? a() : good();
}

function ingang() {
  console.log('1일 2인강은 필수입니다.. 아래는 완전 재밌는 인강임');
  console.log('https://www.youtube.com/results?search_query=%EA%B3%A01%EC%88%98%ED%95%99');
}

function goodgood() {
  console.log('-이제 쉬어')
}

checkGang(2, ingang, goodgood);

 

하지만 콜백 함수를 사용해 비동기식 프로그램을 작성하였을 때의

문제점도 존재합니다.

 

<문제점>

가장 흔한 문제점은 바로 콜백지옥입니다.

콜백지옥은 함수의 매개변수로 넘겨지는 콜백함수가 계속 반복되어 코드를 감당하기 힘들 정도로 깊어지는 현상을 말합니다.

이로 인해 가독성이 좋지 않으며 에러의 처리가 곤란하기 때문에 여러 개 비동기 처리를 한 번에 처리하는 것에도 한계가 있습니다.

콜백지옥뿐만 아니라 안티패턴등 다양한 문제점도 존재한다고 합니다.

안티패턴이란  다양한 사람들이 많이 사용하는 패턴이지만

성능, 디버깅, 유지보수, 가독성 측면에서 부정적인 영향을 줄 수 있어 지양하는 패턴입니다.