목차
- 콜백이란 뭐라고 생각하나요? 🌊
- 어떤 일을 다른 객체에게 시키고, 그 일이 끝나는 것은 기다리지 않고 끝나고 부를 때까지 다른 일을 하는 것- 콜백지옥과 해결방법
async나 Promise 사용을 통해 해결
Callback
1. 콜백이란 뭐라고 생각하나요?
- 함수 안에서 실행하는 또 다른 함수
다른 함수의 매개변수로 함수를 전달하고, 어떠한 이벤트가 발생한 후 매개변수로 전달한 함수가 다시 호출
(= 어떤 일을 다른 객체에게 시키고, 그 일이 끝나는 것은 기다리지 않고 끝나고 부를 때까지 다른 일을 하는 것)비동기적으로 처리되는 함수
1 2 3 4 5 6 7 8 9 10 11 12
function async(callback) { setTimeout(() => { callback("1초 후 실행"); }, 1000); } async(function (msg) { console.log(msg); }); //undefined //1초 후 실행
callback을 통해서 어떠한 비동기 로직이 끝났을 때 callback 함수를 실행시킴으로써 비동기 작업이 완료되었을 때 callback에서 작성한 어떠한 행동을 실행할 수 있게 함
2. 콜백지옥과 해결방법
- 콜백지옥(Callback hell) : 비동기 처리 로직을 위해 콜백 함수를 연속해서 사용할 때 발생하는 문제
1
2
3
4
5
6
7
8
9
$.get("url", function (response) {
parseValue(response, function (id) {
auth(id, function (result) {
display(result, function (text) {
console.log(text);
});
});
});
});
- 위처럼 여러가지 과정을 비동기로 처리해야할 때 콜백 안에 콜백이 계속 무는 형식으로 코딩을 하게 됨
- 이러한 코드 구조는 가독성이 떨어지고 로직을 변경하기 어려움
=> Promise 나 Async를 사용- Promise : .then()을 이용하여 순차적으로 실행(에러도 catch를 통해 한번에 처리 가능)
- async : await를 통해 처리
* 230105 Promise와 분리
출처
callback & promise + 강의
Promise
callback & promise
callback & promise 전체
callback hell