정의
- Javascript는 비동기적으로 처리되며, 비동기 작업 후 결과를 받아서 그 결과값으로 처리해야 하는 경우가 생길때, Callback 내에 코드를 작성 하게 된다.
- 하지만 위와같은 작업이 많아질때 발생하는 문제가 바로 Callback Hell이다. (아래 그림 참고)
- 예시) ‘비동기 작업 후 결과를 받아 그 결과값을 처리해야 하는 경우’
- Callback Hell 그림
문제점
- 코드가 작동하는 것에는 문제가 없지만 가독성이 매우 좋지 못하다.
해결방안
1. 코딩패턴
function parseValueDone(id) {
auth(id, authDone);
}
function authDone(result) {
display(result, displayDone);
}
function displayDone(text) {
console.log(text);
}
$.get('url', function (response) {
parseValue(response, parseValueDone);
});
2. Promise 패턴
- CallBack Hall을 개선하기위해 ES6부터 언어적으로 지원하게된 문법
- 문법 : new Promise((resolve, reject){...})
- 비동기 처리에 성공하면 reslove 메소드를 호출해서 비동기 처리 결과를 후속처리 메소드로 전달
- 실패 시 reject메소드를 호출하여 에러 메세지를 후속처리 메소드로 전달
//프로미스 생성
const promise1 = function(param){
return new Promise(function(resolve,reject){
if(param){
resolve("바보");
}
else{
reject("아닌데");
}
});
}
//프로미스 실행
promise1(true).then(function(result){
console.log(result);//바보
},function(err){
console.log(err);//아닌데
});
3. Async, Await 라이브러리(이게 짱)
- Promise의 단점을 보안하고자 나온 문법
- 문법