JavaScript

Javascript Promise (약속)을 알아보자!

ITSkeleton 2020. 6. 26. 22:42
728x90
반응형

비동기를 처리하기위해 Promise객체가 만들어 졌습니다.

 

완료되면 하나의 값을 결과로 반환하는데, 실패하게되면 정상적으로 처리되었을때의 값 대신 실패한 이유를 반환해 줄 수 도 있습니다.

 

Promise는 세가지의 상태를 나타냅니다

 

1. 대기중(pending) - 아직 처리가 완료되지 않은 상태입니다.

2. 이행됨(fulfilled) - 비동기 처리가 성공적으로 완료되어 결과 값이 나온 상태입니다.

3. 거부됨(rejected) - 비동기 처리가 실패한 상태입니다.

 

Promise는 두가지의 메서드를 가지는데

1. then (onFulfilled, onReject) - 성공하였을때 호출될 함수를 정의 합니다. 첫번째 인자(onFulfilled)에는 성공적으로 이행되었을때 호출되고 두번째 인자(onRecject)는 실패 했을때 호출됩니다.

2. catch (onReject) - 비동기 처리가 실패했을때 호출될 함수를 등록합니다.

 

function promiseMethod(isBool) {
 return new Promise((resolve, reject) => {
  console.log('promise Start');
  if (isBool) {
   resolve({
    result: 'promise-resolve',
   });
  } else {
   reject(new Error('Error'));
  }
 });
}

const promise1 = promiseMethod(true);
const promise2 = promiseMethod();

promise1.then(p => console.log(p));

promise2.then(p => console.log(p)).catch(e => console.error(e));

 

위와 같이 코드를 만들었다고 가정해봅시다.

 

결과가 과연 어떻게 나왔을까요?

 

promise Start
{ result: 'promise-resolve' }
promise Start
Error: Error

콘솔창에는 이렇게 나오게 됩니다.

 

true일 경우 then 으로 들어가게 됩니다.

728x90
반응형