[javascript] 프로미스를 활용한 배치 작업 처리 방법

프로미스는 자바스크립트에서 비동기 작업을 처리할 때 유용한 패턴입니다.

배치 작업(batch processing)은 한 번에 여러 작업을 처리하는 것을 의미합니다. 예를 들어, 데이터베이스에서 여러 개의 레코드를 조회하거나 API에서 여러 개의 요청을 보낼 때, 배치 작업을 통해 효율적으로 처리할 수 있습니다.

프로미스를 사용하여 배치 작업을 처리하는 방법은 다음과 같습니다.

단계 1: 프로미스 생성

처리해야 할 각 작업에 대해 프로미스를 생성합니다. 프로미스는 비동기 작업이 완료되면 resolve 콜백 함수를 호출하여 결과를 반환하거나, reject 콜백 함수를 호출하여 에러를 처리합니다.

function fetchData(url) {
  return new Promise((resolve, reject) => {
    // 비동기 작업 실행
    // 작업이 완료되면 resolve 또는 reject 호출
  });
}

// 여러 개의 프로미스 생성
const promises = [];
promises.push(fetchData('https://api.example.com/data1'));
promises.push(fetchData('https://api.example.com/data2'));
promises.push(fetchData('https://api.example.com/data3'));

단계 2: Promise.all로 모든 작업 동시에 실행

Promise.all 메서드를 사용하여 모든 프로미스가 완료될 때까지 기다립니다. 이 메서드는 모든 프로미스가 성공적으로 완료되면 resolve 콜백 함수를 호출하고, 하나 이상의 프로미스가 에러를 반환하면 reject 콜백 함수를 호출합니다.

Promise.all(promises)
  .then(results => {
    // 모든 작업이 성공적으로 완료된 경우
    // 결과 처리
  })
  .catch(error => {
    // 하나 이상의 작업이 에러를 반환한 경우
    // 에러 처리
  });

단계 3: 결과 처리

Promise.all의 resolve 콜백 함수에서는 모든 작업의 결과가 배열 형태로 전달됩니다. 따라서 각 작업의 결과를 순회하면서 필요한 처리를 수행할 수 있습니다.

Promise.all(promises)
  .then(results => {
    results.forEach(result => {
      // 결과 처리
    });
  })
  .catch(error => {
    // 에러 처리
  });

배치 작업을 프로미스를 활용하여 처리하는 방법을 알아보았습니다. 프로미스를 사용하면 비동기 작업을 간편하게 관리할 수 있으며, Promise.all을 통해 여러 개의 작업을 효율적으로 처리할 수 있습니다.