본문 바로가기

Front-end/Basic

Promise와 Callback의 차이점은 무엇이며 각각의 장단점은?

비동기 프로그래밍(Asynchronous)

Promise와 Callback의 차이점은 무엇이며 각각의 장단점은?

둘 다 자바스크립드에서 비동기 처리를 위해서 사용되는 패턴이며,

Callback 같은 경우 함수의 처리 순서를 보장하기 위해서 함수를 중첩하게 사용되는 경우가 발행해

콜백헬이 발행하는 단점에러 처리가 힘들다라는 단점이 있다.

 

그래서 나온게 Promise이며 ES6부터 정식 채택되어 사용중이다.

Promise 생성자 함수를 통해 인스턴스화하며,

// Promise 객체의 생성
const promise = new Promise((resolve, reject) => {
// 비동기 작업을 수행한다.

if ( /* 비동기 작업 수행 성공 */) {
	resolve('result');
} else { /* 비동기 작업 수행 실패 */
    reject('failure reason');
}
});

 

비동기 처리에 성공하면 resolve 메소드를 호출해서 비동기 처리 결과를 후속처리 메소드로 전달한다.

비동기 처리에 실패하면 reject 메소드를 호출해서 에러 메세지를 후속처리 메소드로 전달한다.

 

후속처리 메소드를 then과 catch가 있다. 둘 다 Promise를 반환한다.

then을 가지고 메소드 체이닝을 통하여서 콜백헬 문제를 해결할 수 있다.