Promise와 Callback은 모두 비동기 작업을 처리하는 방법이지만, 사용법과 구조에서 차이가 있음.
- 구조:
- Callback: 함수의 매개변수로 다른 함수를 전달하여 비동기 작업이 완료될 때 실행되는 콜백 함수를 정의함. 이는 주로 콜백 헬(callback hell)을 초래할 수 있음.
- Promise: 비동기 작업을 Promise 객체로 감싸고, 성공 또는 실패 시 해당 Promise의 상태를 변경하여 then() 및 catch() 메서드를 통해 결과를 처리함. 이는 콜백 지옥을 방지하고 가독성을 향상시킵니다.
- 가독성:
- Callback: 콜백 함수가 중첩되면 가독성이 저하될 수 있으며, 복잡한 작업의 처리가 어려울 수 있음.
- Promise: then() 및 catch() 메서드를 사용하여 비동기 작업의 연쇄를 명확하게 표현하고, 비동기 코드의 가독성을 높일 수 있음.
- 에러 처리:
- Callback: 에러 처리가 복잡할 수 있으며, 콜백 함수의 중첩으로 인해 실수하기 쉬움.
- Promise: catch() 메서드를 사용하여 전체 Promise 체인에서 발생한 에러를 쉽게 처리함.
- 코드 구조:
- Callback: 비동기 작업의 순서를 명시적으로 정의하기 어려울 수 있으며, 가독성이 떨어질 수 있음.
- Promise: then() 메서드를 사용하여 비동기 작업의 순서를 명확하게 표현할 수 있으며, 코드 구조를 간결하게 유지할 수 있음.
요약:
Promise는 콜백 함수의 단점을 보완하여 비동기 코드를 더욱 명확하고 가독성 있게 작성할 수 있도록 도와줌.