일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
- 인공지능
- 선형대수학
- pytorch
- RNN
- mnist
- 회귀
- 42서울
- 지정헌혈
- 플러터
- 머신러닝
- 데이터분석
- 크롤링
- 유데미
- CV
- 앱개발
- 크롤러
- map
- 딥러닝
- 자연어처리
- 선형회귀
- 피플
- AI
- 42경산
- Regression
- 모델
- Computer Vision
- Flutter
- 코딩애플
- filtering
- 파이썬
- Today
- Total
David의 개발 이야기!
콜백함수에 대해서 알아보자! 본문
콜백함수는 JS를 공부할때, 자주 접하게 되는 중요한 개념중 하날, 본 글에서는 콜백함수의 정의, 동작원리 그리고 예제와 활용처에 대해 기술해보고자 한다.
1. 콜백함수의 정의
콜백함수란, "다른 함수의 인자로 전달된 함수" 를 의미한다
콜백함수는 다른 함수에 인수로 전달되어 실행되는 함수를 의미한다. 쉽게 설명하면, 특정작업이 완료된 후 실행되도록 설계된 함수이다.
콜백함수는 주로 비동기작업 (데이터 요청, 이벤트 처리)나 재사용 가능한 코드블록을 생성하는데 사용된다.
2. 콜백함수의 동작원리
콜백 함수는 아래와 같은 방식으로 작동한다.
- 함수 A가 함수 B를 인수로 전달
- 함수 A의 로직이 실행되다가 적절한 시점에 함수 B를 호출
이러한 메커니즘 덕분에 비동기 프로그래밍에서 작업의 순서를 효과적으로 관리할 수 있다.
#함수 A
function greet(name, callback) {
console.log(`Hello, ${name}!`);
callback();
}
#함수 B
function sayGoodbye() {
console.log("Goodbye!");
}
greet("Alice", sayGoodbye);
위 코드에서는 greet 함수가 이름을 출력한 뒤 전달받은 sayGoodbye 콜백 함수를 호출한다.
3. 콜백함수의 활용 사례
1) 이벤트 처리
웹 개발에서 콜백 함수는 이벤트 처리에 자주 사용된다.
document.getElementById("btn").addEventListener("click", function () {
console.log("Button clicked!");
});
위 예제에서는 버튼 클릭 이벤트가 발생했을때, 실행될 콜백함수를 정의한다.
(addEventListener 함수의 두 번째 인수로 전달된 익명 함수(function () { console.log("Button clicked!"); })가 콜백 함수로 작동)
2) 비동기 작업처리
비동기 프로그래밍에서도 콜백함수가 필수적이다. 예를 들어, 데이터를 서버에서 요청할때 다음과 같이 사용 가능하다.
function fetchData(url, callback) {
setTimeout(() => {
console.log(`Fetching data from ${url}`);
callback("Data received");
}, 2000);
}
fetchData("https://api.example.com", function (data) {
console.log(data);
});
4. 결론
콜백함수는 JS 프로그래밍의 핵심 개념으로, 비동기 작업을 처리하거나, 동작의 흐름을 제어하는데 강력한 도구다. 하지만, 콜백함수가 지나치게 중첩되면, "콜백 지옥" 문제가 발생할 수 있어, 상황에 따라 Promise나 async/await을 활용하는것도 좋은 선택이다.
끝!
'nodejs' 카테고리의 다른 글
화살표 함수(Arrow Function) 에 대해 알아보기 (0) | 2025.01.01 |
---|---|
m1 mac환경 homebrew 설치하기 (0) | 2023.08.06 |
맥 nodejs 삭제 후 재설치 - zsh: command not found: npm (0) | 2023.08.06 |