← 목록

비동기 JavaScript: Promise의 기본 이해 🚀

작성: 2025년 12월 06일읽기: 약 2분

웹 개발을 하다 보면, 때로는 우리가 작업을 요청하고 그 결과를 기다려야 할 때가 있습니다. 예를 들어, 사용자의 데이터를 서버에서 가져오거나, 큰 파일을 다운로드하는 경우가 그렇죠. 이런 작업들은 즉시 완료되지 않습니다. 이때 우리는 비동기 JavaScript, 특히 Promise를 사용합니다.

Promise란 무엇인가요?

간단히 말해서, Promise는 JavaScript에서 비동기 작업의 최종 완료(또는 실패) 및 그 결과값을 나타내는 객체입니다. Promise는 세 가지 상태를 가집니다:

Promise 사용하기

Promise를 사용하는 기본적인 방법은 다음과 같습니다:

let promise = new Promise(function(resolve, reject) {
  // 비동기 작업을 수행합니다.
  // 성공하면, resolve를 호출합니다.
  // 실패하면, reject를 호출합니다.
});

promise.then(
  function(result) { /* 성공 처리 */ },
  function(error) { /* 실패 처리 */ }
);

예제: 파일 다운로드 시뮬레이션

function downloadFile(url) {
  return new Promise((resolve, reject) => {
    console.log(`다운로드 시작: ${url}`);
    // 시뮬레이션을 위해 setTimeout 사용
    setTimeout(() => {
      // 50% 확률로 성공 또는 실패
      if (Math.random() > 0.5) {
        resolve("파일 다운로드 성공");
      } else {
        reject("파일 다운로드 실패");
      }
    }, 3000); // 3초 후
  });
}

downloadFile('http://example.com/file')
  .then(result => console.log(result))
  .catch(error => console.error(error));

이 예제에서는 파일을 다운로드하는 작업을 시뮬레이션합니다. downloadFile 함수는 URL을 받아 Promise를 반환합니다. 3초 후에 무작위로 성공 또는 실패를 결정합니다. 성공하면 resolve를 호출하고, 실패하면 reject를 호출합니다. .then()은 성공 시 호출되고, .catch()는 실패 시 호출됩니다.

결론

Promise는 JavaScript에서 비동기 작업을 다룰 때 매우 유용합니다. 이를 통해 코드의 가독성을 높이고, 콜백 지옥(callback hell)을 피할 수 있습니다. 주니어 개발자 여러분, 비동기 작업을 더 쉽게 다루기 위해 Promise를 적극 활용해 보세요! 🚀