정의 : 함수에 파라미터 형태로 함수가 들어가는것
용도 : 순차적으로 코드를 실행하고 싶을때 씀
예제1) 이벤트리스너 함수
//버튼 클릭시 어떤일이 일어나게 하는것
document.querySelector('.button').addEventListener('click',function(){
//버튼 클릭시 실행될 코드가 여기에 위치한다
})
-> addEventListener : 함수
-> function(){} : 콜백함수
예제2) setTimeout : 몇초뒤 어떤코드 실행해 달라고하는 함수
setTimeout (function (){
//콜백함수안에서 실행될 어떤 코드~
},1000)
1000ms = 1초
그러니까 1초 경과후에 콜백함수 안에있는 어떤 함수를 실행해 줄수있음.
특징)
1. 다른데서 만든 함수도 콜백함수로 넣을수 있음
document.querySelector('.button').addEventListener('click', 함수명)
콜백함수의 원리 (어떤식으로 코드를 짜야 함수를 집어넣을수 있을까?)
function first(파라미터) {
console.log(1)
파라미터()
}
function second (){
console.log(2)
}
first(second)
//라고 하면 1다음에2가 찍힌다. 이런식으로 함수가 연결되게 실행되게 하고싶을때 쓴다!
first()
second()
//콜백함수없이 이런식으로도 쓸수있지만 여러가지 문제(비동기처리로인해 순서대로 실행이
안된다거나)가 있기때문에 콜백함수를 쓴다.
콜백 헬
꼬리에 꼬리를 무는 비동기 처리가 늘어나면 호출이 계속 중첩되고,코드가 깊어지고, 관리는 어려워진다. 이런 깊은 중첩을 콜백 헬/멸망의 피라미드라 부른다.
콜백헬이 발생하는 이유?
콜백 헬을 해결할 방법은 없나? -> async await, promise
Credit : applecoding