비동기 처리를 하기 위해서 Callback 함수를 사용합니다. Callback 함수는 이벤트 루프에 의해서 태스크 큐에 저장되고 콜 스택이 비워지면 실행됩니다. 하지만 이러한 방식은 Callback 함수의 처리 결과를 Callback 함수 내부에서 처리해야기 때문에 가독성이 안좋아지는 Callback Hell이라는 문제점이 발생하고 하위 컨텍스트로 에러를 전달할 수 없기 때문에 try ~ catch 문으로 에러를 처리하는 것이 불가능합니다. 따라서 이러한 문제들을 해결하기 위해 나온 것이 Promise 입니다.
출처