일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 권한세팅
- nestJS
- 소돌엔
- DTO typr
- request dto
- @Overloading
- 필수명령어
- @ Deprecated
- Port ~ was already in use.
- Vue
- 명령어
- java
- 웹용어
- 순환종송석
- linux
- TypeScript
- BFF Pattern
- React
- WEB
- vue install
- Web server failed to start.
- 네스트제이에스
- forwardRef()
- npx install create-react-app
- 돌소엔
- 돌소
- 페이지 라우팅
- springboot
- :src
- 카페
- Today
- Total
유바바아들 닮은 개발자의 끄적끄적
[ 웹 개발 ] 콜백 함수에 대해서 알아보자 본문
자바스크립트에서 비동기 프로그래밍은 웹 애플리케이션의 성능을 향상시키는 핵심 기술 중 하나입니다. 이를 가능하게 하는 중요한 개념이 바로 "콜백 함수"입니다. 이 블로그에서는 콜백 함수의 기본 개념부터 실제 활용 예시까지 자세히 알아보겠습니다.
콜백 함수란?
콜백 함수는 자바스크립트에서 다른 함수의 매개변수로 전달되고, 나중에 호출되는 함수를 말합니다. 이는 자바스크립트가 함수를 일급 객체로 취급하여 함수를 변수에 할당하고, 다른 함수의 인자로 전달할 수 있는 유연성을 제공하기 때문에 가능한 개념입니다.
콜백 함수의 활용
- 비동기 프로그래밍
비동기 프로그래밍에서 콜백 함수는 주로 비동기적인 작업의 완료를 처리하거나 결과를 다루는데 사용됩니다. 대표적으로 setTimeout, setInterval, XMLHttpRequest, 파일 읽기 등 비동기적으로 처리되는 작업들이 콜백 함수를 활용합니다.
// 비동기적인 콜백 함수 예시: setTimeout
console.log("시작");
setTimeout(function() {
console.log("2초 후에 실행되는 콜백 함수");
}, 2000);
console.log("끝");
이벤트 핸들링 웹 애플리케이션에서는 사용자의 동작에 따라 이벤트가 발생합니다. 이러한 이벤트에 대한 콜백 함수를 등록하여 사용자의 입력에 즉시 반응하는 것이 가능합니다.
<!-- HTML 요소에 이벤트 핸들러 등록 -->
<button id="myButton">클릭해보세요!</button>
<script>
// 이벤트 핸들러에 콜백 함수 등록
document.getElementById("myButton").addEventListener("click", function() {
console.log("버튼이 클릭되었습니다!");
});
</script>
콜백 지옥 (Callback Hell)과 해결법 콜백 함수를 연속적으로 사용하다 보면 코드의 들여쓰기 수준이 깊어지고 가독성이 떨어지는 "콜백 지옥"이 발생할 수 있습니다. 이러한 상황을 해결하기 위해 Promise, async/await과 같은 기술들이 도입되었습니다.
// 콜백 지옥 예시
asyncFunc1(function() {
asyncFunc2(function() {
asyncFunc3(function() {
// ...
});
});
});
// async/await를 활용한 해결법
async function asyncFunc() {
await asyncFunc1();
await asyncFunc2();
await asyncFunc3();
// ...
}
콜백 함수는 자바스크립트 비동기 프로그래밍의 핵심 개념으로서, 비동기 작업 처리와 이벤트 핸들링에 중요하게 활용됩니다. 하지만 콜백 지옥을 피하기 위해 Promise와 async/await 같은 현대적인 기술들을 적극적으로 활용하는 것이 좋습니다.
'웹개발' 카테고리의 다른 글
[ 웹 개발 ] 대표적인 디자인패턴 3개를 알아보자 (0) | 2023.07.21 |
---|---|
[ 웹 개발 ] SSH(보안 셀) 일반적으로 사용되는 몇 가지 명령어를 알아보자 (0) | 2023.07.21 |
[ 웹 개발 ] JRE 와 JDK 의 차이점을 알아보자. (0) | 2023.07.21 |
[ 웹 개발 ] 클래스 , 메소드 또는 문서에 Deprecated 는 무슨뜻일까? (0) | 2023.07.20 |
[ 웹 개발 ] HTTP GET Method는 URL 을 255자 이상을 허용한다. (0) | 2023.07.18 |