async UI state

비동기 결과는 loading, success, empty, error 상태로 매핑한다

요청 시작과 완료, 빈 결과, 실패를 하나의 state로 섞지 않아야 화면 분기가 예측 가능해진다.

01 Idle 아직 요청 전 초기 화면
02 Loading 요청 중 spinner/skeleton
03 Success data 표시 빈 배열은 별도 처리
04 Error 실패 안내 재시도 제공
상태
화면
전이 조건
idle
초기 안내
사용자 요청
loading
대기 UI
resolve/reject
success
데이터 렌더
새 요청 가능
empty/error
빈 결과/오류
재검색 또는 retry
핵심 비동기 UI는 boolean 몇 개보다 명시적인 상태 전이가 읽기 쉽다.