1. Promise 객체
  ㅇ `비동기 작업`과 `그 작업 완료 결과에 따라 해야 할 일`을 캡슐화한 일급 객체
  ㅇ 장래에 일어날 결과에 따라, 선택적으로 어떤 함수를 실행(호출)할 것을 약속 함
     - 즉, 장래 작업 완료 시에, 그 결과 (success,fail)에 따라,
     - 이에 적절히 대응하는 메소드 즉, 콜백함수 (promise 객체 내 캡슐화됨)를 호출 함
  ㅇ [참고용어] 
     - 일급객체 : 함수의 입력(매개변수),출력(리턴값)에 쓰일 수 있는 객체
     - 콜백함수 : 다른 함수에 인수로써 넘겨질 수 있는 함수
2. Promise 객체의 생성 및 진행과정
  ㅇ promise 생성자 문법 예시
      const promise = new Promise( (resolve, reject) => {
    if (success) resolve(value);    // 비동기 작업 성공시, 수행되는 콜백함수
    else reject(error);             // 비동기 작업 실패시, 수행되는 콜백함수
});
  ㅇ promise 생성 및 진행 과정
     - 비동기 동작의 요청/호출이 필요할 때 (aync call),
     - 미리 정의된 promise 객체를 생성하면서 (promise object created),
        . 이때, 2개 인수로써, resolve(),reject()를 전달 받음
     - 작업 진행 상태를 구분하고 (pending 등),                                  ☞ 아래 4.항 참조
     - 결과 처리를 함 (outcome)
        . 결과(success:성공,fail:실패)에 대한 리턴값(value,error) 전달
  ㅇ promise 결과 리턴 및 처리
     - 작업 결과에 따른 리턴값 전달 (return)
        . 비동기 작업 요청시 생성된 promise 객체는,
        . 작업 결과(success:성공,fail:실패)에 따라, 
        . 각각 그에맞는 리턴 값을 전달 함
     - 결과 처리 (method) 
        . 작업 결과(success:성공,fail:실패)에 따라, 그에맞는 메소드 실행
        . 성공시, 실행 메소드로써 콜백함수 resolve(성공 결과값)을 호출 
        . 실패시, 실행 메소드로써 콜백함수 reject(실패 오류값)를 호출
     - 한편, promise 객체의 결과 처리를 위한 체이닝 방법으로써,             ☞ 아래 3.항 참조
        . then() 및 catch()가 있음
   
3. Promise 객체의 메소드
  ※ 생성된 promise 객체는, 비동기 작업 결과에 따라, 
     - 그에맞는 콜백함수를 then(),catch()에 인수로써 전달함
  ㅇ then 메소드 : 성공시 처리할 메소드
     - promise.then(success_cb, fail_cb)
        . promise : 생성된 promise 객체
        . success_cb : 성공시 콜백함수 (promise 객체 내 resolve에 의해 호출됨)
        . fail_cb : 실패시 콜백함수 (promise 객체 내 reject에 의해 호출됨)
  ㅇ catch 메소드 : 거절(실패)시 처리할 메소드
     - promise.catch(fail_cb)
        . promise : 생성된 promise 객체
        . fail_cb : 실패시 콜백함수 (promise 객체 내 reject에 의해 호출됨)
4. Promise 객체의 (비동기 처리) 진행 상태 구분
  ㅇ 대기중 (pending)  :  `진행중 (unsetted)`
     - 프로미스가 생성된 직후
  ㅇ 이행됨 (fulfilled)  :  `처리후 (settled)` 
     - resolve 함수 호출. 즉, 비동기 처리 성공시
  ㅇ 거부됨 (rejected)  :  `처리후 (settled)`
     - reject 함수 호출. 즉, 비동기 처리 실패시