배치 API 호출을 통한 JavaScript 비동기 처리 전략
카테고리
프로그래밍/소프트웨어 개발
서브카테고리
개발 툴
대상자
JavaScript 개발자, 비동기 프로그래밍 및 API 관리 필요자
난이도: 중급~고급 (Promise, async/await, 배열 조작 기초 지식 필요)
핵심 요약
Promise.all
을 활용한 병렬 API 요청 처리limit
파라미터로 동시 요청 수 제어 (기본값 3)- 재귀적 호출 구조로 배치 처리 확장 가능 (예:
limitApis = limitAPICalls(urls)
)
섹션별 세부 요약
1. 함수 정의 및 배열 분할
urls
배열을limit
단위로 분할 (예:urls.slice(i, i + limit)
)limitAPICalls
함수는urls
와limit
을 인자로 받음for
루프로 배열을limit
간격으로 반복 처리
2. 비동기 요청 처리
Promise.all
을 사용해 분할된 배치 배열(batch
)의 모든 URL에 대해 동시 fetch 수행fetch(url).then(res => res.json())
으로 응답 데이터를 JSON 형식으로 변환responses
배열에 모든 응답 데이터 저장
3. 응답 처리 및 재귀 호출
responses.forEach
로 각 응답을 순회하며 콘솔에 출력 (예:Response ${i + index + 1}:
, res)limitApis = limitAPICalls(urls)
로 재귀적 호출 구조로 다음 배치 처리 가능
결론
Promise.all
+ 배열 분할을 통해 비동기 API 호출을 효율적으로 관리limit
파라미터로 병렬 처리 수 제어하여 서버 과부하 방지- 재귀 호출 구조는 대규모 데이터 처리에 유리하지만, 무한 루프 예방을 위해 추가 조건 검증 필요
- 예시 코드의
limitApis = limitAPICalls(urls)
는 재귀 호출로 인한 무한 루프 가능성 주의 (예:urls
가 비어있지 않은 경우)