자바스크립트 비동기 처리에 사용되는 객체
서버에 데이터를 요청하고 받아오기 위해 API 사용==> 대체
function getData(callback) {
// new Promise() 추가
return new Promise(function(resolve, reject) {
$.get('url 주소/products/1', function(response) {
// 데이터를 받으면 resolve() 호출
resolve(response);
});
});
}
// getData()의 실행이 끝나면 호출되는 then()
getData().then(function(tableData) {
// resolve()의 결과 값이 여기로 전달됨
console.log(tableData); // $.get()의 reponse 값이 tableData에 전달됨
});
Promise의 3가지 상태 (처리 과정)
1. Pending(대기) : 비동기 처리 로직이 아직 완료되지 않은 상태
newPromise(): 메서드를 호출해 대기 상태를 만듬 => 메서드 호출 시 콜백 함수를 선언할 수 있고, 인자는 (resolve, reject)
2. Fulfilled(이행==완료): 비동기 처리가 완료되어 결과 값을 반환해준 상태
인자인 resolve 를 실행 시 Fulfilled 상태가 된다.
이행 상태가 되면 then()을 이용해 처리 결과 값을 받을 수 있다.
3. Rejected(실패) : 인자인 reject()을 통해 실패 상태를 만든다.
실패 상태가 되면 실패한 이유를 catch()를 통해 받을 수 있다.
여러 개의 프로미스 연결하기
여러 개의 프로미스를 연결하여 사용할 수 있다.
then() 호출 시 새로운 객체를 여러 개 호출 가능
==> setTimeout()을 사용해 비동기 처리
서비스 구현 시 네트워크 에러, 서버 문제 등으로 오류 시
==> catch()로 처리 권장 첫 번째 콜백 함수 내부에서 오류가 나는 경우 오류를 잡지 못한다.