TIL. Promisify

배상건·2022년 3월 9일
0

TIL

목록 보기
6/15

서버간 통신에서 Promise 객체를 사용하기 위해 fetch 함수가 리퀘스트를 받고 리턴하는 promise 객체를 이용한다.
하지만, fetch 함수로 promise 함수를 수동적으로 받아오는 것이 아닌,
직접 promise 객체를 생성하는 것이 가능한다.

const p = new Primise(resolve, reject) => {

});

위 코드는 new 키워드로 생성한 promise객체를 변수 p에 할당한 코드이다.
여기서 중요한 것은 파라미터로 들어간 아래 콜백함수이다.

두 개의 파라미터 resolve, reject를 'executor' 함수라고 부른다.

파라미터로 들어간 resolve, reject는 promise 객체가 생성 될 때, 자동으로 실행되는 함수이다. 이 함수들의 정확한 이름은 'executor 함수'라고 한다.

'executor 함수'의 의미

  1. resolve 파라미터
    resolve 파라미터에는 생성 될 promise 객체를 fulffilde 상태로 변경하는 함수가 연결된다.
  2. reject 파라미터
    reject 파라미터에는 생설 될 promise 객체를 rejected 상태로 변경하는 함수가 연결된다.

'executor 함수' 적용

1. resolve 파라미터 적용

const p = new Primise(resolve, reject) => {
	setTimeout(() => { resolve('success'); }, 2000);
});

위 코드는 promise 객체인 p를 2초 뒤에 fulffiled 상태로 변경하는 코드이다.

위 코드는 setTimeout함수를 사용하여, 2초 후에, resolve 파라미터로 연결된 함수를 실행하게 작성했다.

앞서,'executor 함수의 의미'에서 resolve 파라미터는 promise객체를 fulffiled로 변경하는 함수가 연결된다고 언급했다.

이를 근거로, p객체는 2초 뒤에, fulffiled 상태로 변경된다.
그리고 이때, resolve 함수(파라미터)가 전달받은 인자인
'success'를 작업 성공 결과를 갖게 된다.

1. reject 파라미터 적용

const p = new Primise(resolve, reject) => {
	setTimeout(() => { reject(new Error('fail')); }, 2000);
  
  p.cath((error) => { console.log(error); });
});

reject 함수는 생성되는 Promise 객체의 상태를 rejected 상태로 변경시키는 함수가 연결된다.
그리고, reject 함수의 인자인 Error 객체가 '작업 실패 정보'가 된다.

profile
목표 지향을 위해 협업하는 개발자

0개의 댓글