← 이슈 기록 목록

하나가 실패하면 전부 사라지던 목록

JavaScriptaxiosAsync

01이슈 및 현상

Workflow Designer의 VMF 목록이 가끔 통째로 비어 보였습니다. 20개 중 하나만 API가 실패해도 나머지 19개까지 화면에서 사라졌습니다.

02원인 파악

목록을 axios.all(내부적으로 Promise.all)로 묶어 조회했는데, Promise.all은 하나라도 reject되면 전체가 reject되어 바깥 catch로 빠지고 빈 배열이 반환되는 구조였습니다.

03해결 방안

Promise.allSettled로 바꿔, status가 fulfilled면 value에서 rejected면 reason에서 데이터를 꺼내도록 개별 처리했습니다. 같은 커밋에서 정렬 비교 함수의 부등호 방향과 staleTime/cacheTime 캐시 전략도 함께 바로잡았습니다.

04결과 및 성과

일부 호출이 실패해도 나머지 목록은 정상 표시되어 부분 실패를 허용하게 됐습니다. 이후 다건 병렬 호출은 Promise.allSettled를 쓰는 것이 프로젝트 전반의 표준이 됐습니다.