Promise   프라미스 객체

(2022-05-08)

프로미스, 프라미스


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 함수 호출. 즉, 비동기 처리 실패시

JS 객체
   1. JS 객체   2. JS 객체 구분   3. JS 객체의 생성 저장 접근   4. JS 클래스   5. 프로토타입 객체   6. 프라미스 객체   7. 일급 객체   8. 래퍼 객체   9. 콘솔 객체   10. this 참조   11. 이터레이터   12. 제너레이터   13. 범용 객체 (Object object)  


Copyrightⓒ written by 차재복 (Cha Jae Bok)               기술용어해설 후원
"본 웹사이트 내 모든 저작물은 원출처를 밝히는 한 자유롭게 사용(상업화포함) 가능합니다"