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