[javascript] 콜백 함수 기반 비동기 프로그래밍

콜백 함수를 이용한 비동기 프로그래밍은 자바스크립트에서 매우 일반적으로 사용되는 패턴 중 하나입니다. 이 방식은 비동기 작업을 처리하고 결과를 처리하는데 유용합니다.

콜백 함수란?

콜백 함수는 다른 함수의 인자로 전달되는 함수로, 해당 함수가 완료된 후에 호출됩니다. 이를 통해 비동기 작업이 완료된 후에 콜백 함수가 실행되어 그 결과를 처리할 수 있습니다.

function fetchData(callback) {
  // 비동기 작업 수행
  setTimeout(() => {
    const data = '이 데이터는 비동기적으로 가져온 결과입니다.';
    callback(data); // 작업 완료 후 콜백 호출
  }, 1000);
}

function handleData(data) {
  console.log('데이터 처리:', data);
}

fetchData(handleData);

위 예제에서 fetchData 함수는 비동기 작업을 수행한 후에 handleData 함수를 콜백으로 호출합니다.

콜백 지옥과 해결법

콜백 함수를 계속하여 중첩해서 사용하다보면 코드의 가독성이 떨어지고 유지보수가 어려워지는 “콜백 지옥” 문제가 발생할 수 있습니다. 이 문제를 해결하기 위해 Promise나 async/await과 같은 기술이 등장하게 되었습니다.

예를 들어, Promise를 활용하면 다음과 같이 콜백 지옥을 해결할 수 있습니다.

function fetchData() {
  return new Promise((resolve, reject) => {
    setTimeout(() => {
      const data = '이 데이터는 비동기적으로 가져온 결과입니다.';
      resolve(data);
    }, 1000);
  });
}

fetchData()
  .then(data => {
    console.log('데이터 처리:', data);
  })
  .catch(error => {
    console.error('에러 발생:', error);
  });

결론

콜백 함수를 활용한 비동기 프로그래밍은 자바스크립트에서 중요한 개념이며, 최근에는 Promise나 async/await과 같은 기술로 보다 효율적인 비동기 코드 작성이 가능해졌습니다. 적절하게 활용하여 코드의 가독성과 유지보수성을 유의하면서 비동기 코드를 작성하는 것이 중요합니다.

이상으로 콜백 함수를 기반으로 한 비동기 프로그래밍에 대해 알아보았습니다.

참고 자료