[javascript] 자바스크립트에서 Promise를 이용한 비동기 프로그래밍

자바스크립트는 비동기 프로그래밍에 적합한 언어로, 웹 애플리케이션에서는 서버 요청, 파일 읽기/쓰기, 사용자 입력 처리 등의 작업을 비동기적으로 수행해야 합니다.

비동기 프로그래밍시 처리 로직의 복잡도를 낮추는데 유용한 Promise는 ES6부터 기본적으로 내장되어 있습니다.

Promise란 무엇인가?

Promise는 비동기 작업의 결과를 나타내는 객체로, 완료 또는 실패를 나타내는 상태와 그 결과 값을 제공합니다. Promise는 3가지 상태를 가질 수 있으며, 이는 다음과 같습니다.

  1. 대기(pending): 비동기 작업이 아직 완료되지 않은 상태
  2. 이행(fulfilled): 비동기 작업이 성공적으로 완료된 상태
  3. 거부(rejected): 비동기 작업이 실패한 상태

Promise 사용 예시

function getServerData() {
  return new Promise((resolve, reject) => {
    // 서버에서 데이터를 가져오는 비동기 작업
    setTimeout(() => {
      const serverData = { id: 1, name: 'example' };
      if (serverData) {
        resolve(serverData); // 성공 시 처리
      } else {
        reject('Failed to get data'); // 실패 시 처리
      }
    }, 2000);
  });
}

// Promise를 사용한 비동기 작업 호출
getServerData()
  .then(data => {
    console.log('Data received:', data);
  })
  .catch(error => {
    console.error('Error:', error);
  });

위 예시에서는 getServerData 함수가 Promise를 반환하고, 해당 Promise는 2초 후에 서버 데이터를 반환하거나 실패할 수 있습니다. 그 후 .then.catch를 사용하여 성공 또는 실패 시의 처리를 정의합니다.

Promise를 이용하면 비동기 코드를 간결하고 가독성 있게 작성할 수 있으며, 여러 개의 비동기 작업을 순차적이나 병렬로 처리할 수 있습니다. Promise는 자바스크립트 비동기 프로그래밍에서 필수적이며, ES8부터 도입된 async/await와 함께 많이 사용됩니다.

참고문헌:

  1. MDN Web Docs: Promise

위의 글은 자바스크립트에서 Promise를 이용한 비동기 프로그래밍에 대한 소개입니다. Promise를 잘 활용하면 비동기 코드를 효과적으로 관리할 수 있습니다.