프론트엔드분야를 공부하며 생길수 있는 의문점과 가져야할 지식에 대하여 공부하는 바를 적은 글입니다.
함수의 매개변수로 넘어가는 콜백함수가 반복되는 현상을 일컫는다.
async(1, function() {
async(2, function(){
async(3, function(){
async(4, function(){
console.log("콜백지옥");
})
})
})
})
위의 코드처럼 함수의 매개변수로 함수가 계속해서 반복되면 가독성도 좋지 않을 뿐더러, 코드를 수정하기도 힘들다.
비동기 처리에서 이것을 극복하기 위해 Promise라는 개념을 도입하였다.
promise는 자바스크립트의 비동기 처리에 사용되는 객체이다.
총 3가지의 상태를 가지는데,
resolve
함수를 호출하여 fulfilled 상태로 변경된다.reject
함수를 호출하여 rejected 상태로 변경된다.const example = () => new Promise((resolve, reject) => {
let a = "promise";
if(a=="promise"){
resolve("Success!")
} else{
reject("reject")
}
})
promise().then((message) => {
console.log(`then에서는 ${message}`)
}) .catch((message) => {
console.log(`catch에서는 ${message}`)
})
then, catch는 promise의 후속처리 메서드로, 둘다 promise를 반환한다.