JavaScript Promise
Promise는 비동기 작업의 결과를 나타냅니다.
API 호출, 데이터베이스 쿼리, 파일 읽기 등에 Promise를 사용합니다.
Promise에는 세 가지 상태가 있습니다:
- Pending (대기): 작업이 아직 진행 중입니다.
- Fulfilled (이행): 작업이 성공적으로 완료되었습니다.
- Rejected (거부): 오류와 함께 작업이 실패했습니다.
구조는 다음과 같습니다:
const promise = new Promise((resolve, reject) => {
// The executor runs immediately
});
다음 메서드들을 사용하여 결과를 처리합니다:
- .then(): Promise가 성공했을 때 실행됩니다.
- .catch(): Promise가 실패했을 때 실행됩니다.
- .finally(): 결과와 상관없이 작업이 종료되면 실행됩니다.
기억해야 할 중요한 규칙:
- 첫 번째 결과가 우선합니다. resolve()를 호출한 후 reject()를 호출하면 resolve가 적용됩니다.
- executor 함수는 동기적으로 실행됩니다.
- async와 await를 사용하면 .then()을 사용하는 것보다 코드를 더 읽기 쉽게 작성할 수 있습니다.
여러 개의 Promise 처리하기:
- Promise.all(): 'fail-fast' 방식을 따릅니다. 하나의 Promise라도 실패하면 전체 그룹이 실패합니다.
- Promise.allSettled(): 모든 Promise가 완료될 때까지 기다립니다. 일부 작업이 실패하더라도 결과를 반환합니다.
요약:
- Promise: 비동기 결과 핸들러.
- resolve: 성공을 나타냄.
- reject: 실패를 나타냄.
- async/await: Promise를 작성하는 더 깔끔한 방법.
- Promise.all: 첫 번째 에러 발생 시 중단.
- Promise.allSettled: 모든 작업을 완료.
