Skip to Content
Suffering builds character
아카이브3.Callback,PromisePromise1. Promise 개요

1. Promise 개요

Promise란 용어 그대로 약속이라는 의미를 가짐
누군가와 약속을 한 시점에는 약속이 지켜졌는지, 지키지 못했는지 알 수 없음

이러한 약속은 미래 어느 시점에 이행될 수도 있고(Fulfilled), 실패할 수도 있음(Rejected)

1. Promise in 프로그래밍

프로그래밍에서 Promise란 어떤 프로그램이 실행되는 흐름에서 수행해야할 어떤 작업의 처리 결과(성공/실패)에 대한 결과값이 담길 객체로,

해당 작업을 시작하는 시점에서는 아직 처리가 성공했는지, 실패했는지에 대해 알 수 없음

이러한 처리 결과는 미래의 어느 시점에 성공/실패 중 하나의 형태로 응답받게 됨

정리하면, Promise란 약속이 생성되는 당시에는 아직 알 수 없는 값(Pending)을 가진 Proxy 객체로, 처음에는 비어있는 값을 가지고 있음

자바에서는 Future와 비슷

2. Promise in 자바스크립트

자바스크립트에서 Promise는 주로 외부 API를 활용하는 비동기 처리 작업에 사용됨

Promise를 통해 비동기 처리 작업에 대한 응답 성공 결과 값 또는 응답 실패 이유 메시지를 받을 수 있고, 이에 따라 적절한 처리를 수행할 콜백 핸들러와 연결하여 코드를 작성할 수 있음

2-1. Promise가 필요한 이유

비동기 로직은 여러 방식(패턴)으로 작성하여 처리할 수 있음

  • 콜백 패턴
  • Promise 패턴

Promise는 콜백 패턴과 비교했을 때 후속 처리 및 에러 처리 측면에서 전보다 더 간단하게 비동기 코드를 작성할 수 있게 도와줌
→ 가독성 향상

왜 Promise 객체?

  • 비동기 작업이라는 관심사를 하나의 값의 형태로 담아 관리하기 위해 객체 형태로 래핑
  • Promise는 “아직 존재하지 않는 미래의 값(성공/실패)을 나타내는 객체”
  • Promise 객체는 생성되고, 즉시 반환됨(Pending)
    → 다음 코드 라인으로 실행 흐름을 이어나갈 수 있음
  • 반환된 값은 이후 .then() 등을 통해 실제 값을 받아서 처리할 수 있음
  • 이를 통해 합성, 체이닝, 에러 전달이 가능해짐
Last updated on