asyc, await 이해가 안돼서 많이 찾아보고 물어보기도 했는데 이해가 가지 않았던 이유를 여기서 찾았다.
프로미스를 모르니 왜 쓰는지도 몰랐었음..ㅎ
1. 프로미스
- 자바스크립트는 비동기 처리 위한 하나의 패턴으로 콜백 함수를 사용하는데, 전통적인 콜백 패턴은 콜백 헬로 인해 가독성이 나쁘고 비동기 처리 중 발생한 에러 처리 곤란으로 인해 여러 개의 비동기 처리를 한 번에 처리하는 데도 한계가 있다.
- 이를 극복하기 위해 ES6에서 프로미스가 도입되었다.
- 비동기의 간편한 처리를 위한 오브젝트.
const promise = new Promise((resolve, reject) => {
if() {
resolve('result');
} else {
reject('fail');
}
});
1-1. 프로미스의 상태 조건
프로미스의 상태 정보 | 의미 | 상태 변경 조건 |
---|
pending | 비동기 처리가 아직 수행되지 않음 | 프로미스 생성된 직후 기본 상태 |
fulfilled | 비동기 처리가 수행된 상태 (성공) | reslove 함수 호출 |
rejected | 비동기 처리가 수행된 상태 (실패) | reject 함수 호출 |
1-2. 프로미스 후속 처리 메서드 및 인수, 반환값
후속 처리 메서드 | 콜백 함수의 인수 | 후속 처리 메서드의 반환값 |
---|
then | promiseGet 함수가 반환한 프로미스가 resolve한 값 | 콜백 함수가 반환한 프로미스 |
then | 처음 Then 메서드가 반환한 프로미스가 resolve한 값 | 콜백 함수가 반환한 값을 Resolve한 프로미스 |
catch - 에러 발생하지 않으면 호출되지 않음 | promiseGet 함수 또는 앞선 후속 처리 메서드가 반환한 프로미스가 reject한 값 | 콜백 함수가 반환한 값을 resolve한 프로미스 |