아직 완료되지 않은 비동기 결과와 성공·실패 경로를 표현합니다.
Promise는 pending에서 fulfilled 또는 rejected로 한 번만 settled됩니다. then은 성공값을 이어 받고 catch는 앞 체인의 실패를 처리하며 finally는 결과와 관계없이 실행됩니다. then 안에서 Promise를 return해야 다음 단계가 완료를 기다립니다.
코드를 읽을 때는 task().then(value => ...).catch(error => ...).finally(() => ...); 부분부터 찾으세요. 현재 값과 실행 순서를 줄마다 적어 보면 문법을 외우지 않아도 결과를 예측할 수 있습니다.
결과가 나중에 도착해도 화면 전체를 멈추지 않아야 하는 작업에 사용합니다. 로딩, 성공, 빈 결과, 실패와 취소를 서로 다른 상태로 다루세요.
실행하기 전에 예상 결과를 짧게 적은 뒤 resolve 대신 reject하는 조건을 추가하고 catch와 finally 결과를 확인하세요. 실제 출력이 다르면 콘솔에 처음 나타난 오류와 그 직전 값을 차례로 확인하세요.
Promise를 만들기만 하고 return이나 await하지 않으면 호출한 쪽이 완료와 오류를 추적할 수 없습니다.
직접 바꿔보세요resolve 대신 reject하는 조건을 추가하고 catch와 finally 결과를 확인하세요.