더북(TheBook)

이 코드의 출력 결과는 다음과 같습니다.

1 * 2 = 2
2 * 2 = 4
4 * 2 = 8
8 * 2 = 16
최종 결과는 16입니다.

double 함수에서 Promise를 만들어 코드를 개선해볼까요? Promise를 만드는 방법은 다음과 같습니다.

const promise = new Promise((resolve, reject) => {
  // ...
})

Promise를 만들 때는 resolvereject를 파라미터로 받아오는 함수를 인자로 넣습니다. resolvereject는 둘 다 함수 타입으로 resolve는 작업이 성공했을 때 호출하는 함수, reject는 작업이 실패했을 때 호출하는 함수입니다. resolve 또는 reject 함수를 호출할 때는 결괏값 또는 오류를 인자로 넣어줄 수 있습니다.

double 함수에서 Promise를 만들고 이를 반환해보겠습니다.

function double(number) {
  const promise = new Promise((resolve, reject) => {
    setTimeout(() => {
      if (typeof number !== 'number') {
        reject(new Error('Parameter is not a valid,'))
        return;
      }
      const result = number * 2;
      console.log(`${number} * 2 = ${result}`);
      resolve(result);
    }, 500)
  })
  return promise;
}
신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.