← 목록

JavaScript Promises의 기본 개념과 활용법

작성: 2025년 01월 11일읽기: 약 3분

JavaScript Promises는 비동기 작업을 쉽게 처리할 수 있게 해주는 강력한 도구입니다. 웹 개발을 하다 보면, 서버에서 데이터를 가져오거나 파일을 읽는 등의 작업을 비동기적으로 처리해야 할 때가 많습니다. 이때 Promises가 큰 역할을 합니다.

JavaScript Promise란 무엇인가?

간단히 말해서, Promise는 어떤 작업이 완료될 것이라는 "약속"입니다. 이 작업은 성공할 수도 있고, 실패할 수도 있습니다. Promise는 세 가지 상태 중 하나를 가집니다:

Promise 생성하기

JavaScript에서 Promise를 생성하는 것은 간단합니다. new Promise() 생성자를 사용하여 Promise 객체를 만들 수 있습니다. 이때, 생성자에는 실행 함수(executor function)가 전달됩니다. 이 함수는 두 개의 인자, resolvereject를 받습니다.

let myPromise = new Promise(function(resolve, reject) {
  // 비동기 작업을 여기에 작성
  // 성공 시, resolve를 호출
  // 실패 시, reject를 호출
});

Promise 사용하기

Promise가 생성되면, .then(), .catch(), .finally() 메서드를 사용하여 결과를 처리할 수 있습니다.

myPromise
  .then(function(value) {
    // 성공 시 실행될 코드
    console.log(value);
  })
  .catch(function(error) {
    // 실패 시 실행될 코드
    console.log(error);
  })
  .finally(function() {
    // 성공/실패 여부와 상관없이 실행될 코드
    console.log('Promise가 처리되었습니다.');
  });

예제: 파일 읽기 Promise

아래는 파일을 비동기적으로 읽는 작업을 Promise를 사용하여 처리하는 예제입니다.

const fs = require('fs');

function readFilePromise(filePath) {
  return new Promise(function(resolve, reject) {
    fs.readFile(filePath, { encoding: 'utf-8' }, function(err, data) {
      if (err) {
        reject(err); // 파일 읽기 실패
      } else {
        resolve(data); // 파일 읽기 성공
      }
    });
  });
}

readFilePromise('example.txt')
  .then(function(data) {
    console.log(data); // 파일 내용 출력
  })
  .catch(function(error) {
    console.error(error); // 오류 출력
  });

이 예제에서는 fs.readFile 함수를 사용하여 파일을 읽습니다. Promise를 사용하면, 비동기 작업의 결과를 .then().catch() 메서드를 통해 간결하게 처리할 수 있습니다.

JavaScript Promises는 비동기 프로그래밍을 보다 쉽고 효율적으로 만들어 줍니다. 이 기본 개념과 활용법을 이해하면, 웹 개발에서 마주치는 다양한 비동기 문제를 해결하는 데 큰 도움이 될 것입니다.