함수 Parameter에 함수를 전달하는 것
function myFunc( callback ) {
// 매우 복잡한 로직
// ...
// 매우 복잡한 로직 끝!
// Callback !
callback();
}
function printHelloWorld() {
console.log("Hello World!");
}
myFunc( printHelloWorld );
myFunc( printHelloWorld );
function myFunc( callback )
callback();
function printHelloWorld()
console.log(”Hello World!”);
function printHelloWorld()
function myFunc( callback )
위의 코드를 기준으로 설명하겠다.
myFunc
함수 중간에 callback을 호출할 수 있다.function myFunc( callback ) {
callback();
// 매우 복잡한 로직 시작
// ...
callback();
// ...
// 매우 복잡한 로직 끝
callback();
}
myFunc
이 비동기 함수라면 callback
을 확정적으로 호출할 수 있다.예시) setTimeout( callback, ms );
, setInterval( callback, ms );
console.log("프로세스 시작");
// 1초를 기다린후 callback 함수 실행
setTimeout(() => {
console.log( "1초가 지남" );
}, 1000 );
console.log("프로세스 종료");
// 실행 결과
프로세스 시작
프로세스 종료
1초가 지남
Callback 지옥
- Callback이 신박한 방법이라고 생각해서 남발을 해버리면 아래와 같은 상황이 펼쳐진다.
myFunc(() => { () => { () => { () => { () => { ... } } } } });
myFunc(() => {
myFunc(() => {
myFunc(() => {
myFunc(() => {
// ...
});
});
});
});