[개발인턴] callback vs promise
Promise vs Callback
Callback
- 비동기 처리 시, 함수의 결과를 받아오기 위해 사용한다.
- 처리가 완료되면 결과를 콜백 함수로 전달한다.
Promise
- 비동기 처리 시, 콜백 대신 사용한다.
- 비동기 처리 결과를 담고 있는 객체이며, 이행 혹은 거부 상태를 가진다.
- 불변성을 가지므로, 한 번 값이 정해지면 바뀌지 않는다.
- 다수의 비동기 처리 결과 중 가장 빨리 처리된 결과만을 반환한다.
Promise 상태
- 대기 (pending): 비동기 처리 결과 대기 중
- 이행 (fulfilled): 비동기 처리가 정상적으로 이행되었으며, 결과 값을 가지고 있다.
- 거부 (rejected): 비동기 처리가 비정상적으로 종료되었다.
Promise 함수
- then(): 이행된 Promise에 대한 콜백 함수를 등록한다.
- catch(): 거부된 Promise에 대한 콜백 함수를 등록한다.
- finally(): Promise가 이행 혹은 거부되면 호출된다.
Promise 활용
- Promise.all(): 모든 Promise가 이행된 경우에만 결과 값을 반환한다.
- Promise.race(): 가장 먼저 이행된 Promise의 결과 값을 반환한다.
Thunk
- 비동기 상황에서의 콜백 함수 대용으로 사용된다.
- 함수 내부에서 비동기 처리를 진행하며, 결과 값을 콜백 함수의 인수로 전달한다.
- Thunk를 사용함으로써 원하는 때에 비동기 요청을 시작할 수 있다.
결론
- Promise는 콜백 함수 대신 사용되며, 비동기 처리 결과를 담고 있는 객체이다.
- Thunk는 비동기 상황에서의 콜백 함수 대용으로 사용되며, 비동기 요청을 지연시킨다.