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: 모든 작업을 완료.

출처: https://dev.to/malik786/javascript-promises-2hn4