⇒ 프라미스 예시 코드
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
메서드를 사용해 등록(구독)됩니다.
⇒ 콜백보다 프라미스가 더 좋은 점
너무 어렵다.. ㅎㅎ 써본적도 없는데 너무 어렵다 ㅠㅠ
그래도 이전에 배운 callback보다도 더 좋은 점도 있고, 또 chpater 11에서 프라미스와 관련된 것만 5개다….
그만큼 자주 쓸 가능성이 높다는 점… 화이팅하자 ㅎㅎ