[javascript] 프로미스 체이닝을 통한 연속적인 비동기 작업 처리

자바스크립트에서 비동기 작업은 매우 흔한 경우입니다. 이러한 비동기 작업을 처리하기 위해 프로미스가 자주 사용됩니다. 프로미스는 비동기 작업의 결과를 처리하는 데 사용되는 객체입니다. 프로미스는 성공적으로 완료되었을 때 호출될 콜백 함수와 실패했을 때 호출될 콜백 함수를 제공합니다.

프로미스 체이닝은 여러 개의 비동기 작업을 연속적으로 처리하는 방법입니다. 각 작업은 이전 작업이 완료되면 실행됩니다. 이를 통해 코드의 가독성과 유지 보수성을 향상시킬 수 있습니다.

아래는 프로미스 체이닝의 예제 코드입니다.

function getData() {
  return new Promise((resolve, reject) => {
    setTimeout(() => {
      const data = { id: 1, name: "John" };
      resolve(data);
    }, 1000);
  });
}

function processData(data) {
  return new Promise((resolve, reject) => {
    setTimeout(() => {
      data.age = 30;
      resolve(data);
    }, 1000);
  });
}

getData()
  .then(processData)
  .then((result) => {
    console.log(result);
    // { id: 1, name: "John", age: 30 }
  })
  .catch((error) => {
    console.error(error);
  });

위의 코드에서 getData() 함수는 1초 후에 데이터를 성공적으로 반환하는 프로미스를 생성합니다. 이후 processData() 함수는 1초 후에 데이터를 가공하여 새로운 필드를 추가한 뒤 결과를 반환하는 프로미스를 생성합니다.

getData().then(processData)와 같이 체인을 이어가면, getData()의 프로미스가 완료되면 processData()가 실행되고, 그 결과로 반환된 프로미스가 다시 체인에 연결됩니다.

마지막으로 then() 메서드는 마지막 작업이 완료되었을 때 호출되는 콜백 함수를 등록합니다. 에러가 발생하면 catch() 메서드를 사용하여 에러를 처리할 수 있습니다.

프로미스 체이닝을 사용하면 비동기 작업을 간결하고 구조화된 방법으로 처리할 수 있습니다. 또한 에러 처리도 일관되게 할 수 있기 때문에 코드의 신뢰성을 향상시킬 수 있습니다.

참고 자료