[모던 JavaScript 튜토리얼] - [11.2] 프라미스(promise-basics)

IRISH·2024년 2월 7일
0

JS

목록 보기
66/80


학습 내용

  1. '제작 코드(producing code)'는 원격에서 스크립트를 불러오는 것 같은 시간이 걸리는 일을 합니다. 위 비유에선 '가수’가 제작 코드에 해당합니다.
  2. '소비 코드(consuming code)'는 '제작 코드’의 결과를 기다렸다가 이를 소비합니다. 이때 소비 주체(함수)는 여럿이 될 수 있습니다. 위 비유에서 소비 코드는 '팬’입니다.
  3. 프라미스(promise) 는 '제작 코드’와 '소비 코드’를 연결해 주는 특별한 자바스크립트 객체입니다. 위 비유에서 프라미스는 '구독 리스트’입니다. '프라미스’는 시간이 얼마나 걸리든 상관없이 약속한 결과를 만들어 내는 '제작 코드’가 준비되었을 때, 모든 소비 코드가 결과를 사용할 수 있도록 해줍니다.

⇒ 프라미스 예시 코드

let promise = new Promise(function(resolve, reject) {
  // executor (제작 코드, '가수')
});
  • new Promise에 전달되는 함수는 executor(실행자, 실행 함수) 라고 부름
  • resolve(value) — 일이 성공적으로 끝난 경우 그 결과를 나타내는 value와 함께 호출
  • reject(error) — 에러 발생 시 에러 객체를 나타내는 error와 함께 호출

executor는 자동으로 실행되는데 여기서 원하는 일이 처리됩니다. 처리가 끝나면 executor는 처리 성공 여부에 따라 resolve나 reject를 호출합니다.

한편, new Promise 생성자가 반환하는 promise 객체는 다음과 같은 내부 프로퍼티를 갖습니다.

  • state — 처음엔 "pending"(보류)이었다 resolve가 호출되면 "fulfilled"reject가 호출되면 "rejected"로 변합니다.
  • result — 처음엔 undefined이었다 resolve(value)가 호출되면 value로, reject(error)가 호출되면 error로 변합니다.

따라서 executor는 아래 그림과 같이 promise의 상태를 둘 중 하나로 변화시킵니다.

⇒ 소비자 : then, catch, finally

프라미스 객체는 executor(‘제작 코드’ 혹은 ‘가수’)와 결과나 에러를 받을 소비 함수(‘팬’)를 이어주는 역할을 합니다. 소비함수는 .then.catch.finally 메서드를 사용해 등록(구독)됩니다.

⇒ 콜백보다 프라미스가 더 좋은 점

Untitled

느낀점

너무 어렵다.. ㅎㅎ 써본적도 없는데 너무 어렵다 ㅠㅠ

그래도 이전에 배운 callback보다도 더 좋은 점도 있고, 또 chpater 11에서 프라미스와 관련된 것만 5개다….

그만큼 자주 쓸 가능성이 높다는 점… 화이팅하자 ㅎㅎ

profile
#Software Engineer #IRISH

0개의 댓글