Barogo Tech Blog

[개발인턴] callback vs promise

thumbnail

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는 비동기 상황에서의 콜백 함수 대용으로 사용되며, 비동기 요청을 지연시킨다.