콜백 함수의 단점을 보완는 것이 Promise 이기에 callback 먼저 설명
Callback
- 다른 함수의 인자로써 전달된 함수
- 어떤 이벤트에 의해 호출되는 함수
- 싱글 스레드 기반인 javascript는 병행 처리를 할 수 없는 문제를 해결하기 위해 등장
- 콜백 지옥(콜백 함수가 겹쳐져 가독성이 떨어지는 콜백 함수)의 문제가 있음
Promise란
- 비동기 작업의 완료 또는 실패와 그 결과값을 나타내는 객체(혹은 Event Emitter)
- resolve(성공)와 reject(실패) 이벤트를 발생 시킨다.
- Pending, Fulfilled, Rejected의 상태를 가짐
그래서 차이점은?
- callback은 함수 밖에서 비동기에 대한 값을 알 수 없음
- promise는 객체에 저장
- 물론 .then()없이 쓰면 Promise 객체라고 밖에는 안뜨기에 .then()을 사용해야함