← 목록

JavaScript Promises의 기본 원리와 활용법

작성: 2024년 12월 17일읽기: 약 3분

JavaScript에서 비동기 작업을 다루는 것은 웹 개발의 중요한 부분입니다. "Promise"는 이러한 비동기 작업을 더 쉽게 관리할 수 있는 방법을 제공합니다. 이 글에서는 JavaScript Promises의 기본 원리와 활용법을 쉽게 설명하고자 합니다.

JavaScript Promises란 무엇인가요?

간단히 말해서, Promise는 미래에 완료될 작업의 결과를 대표합니다. 이 작업은 성공적으로 완료될 수도 있고, 실패할 수도 있습니다. Promise는 이 두 가지 결과를 다루는 방법을 제공합니다.

기본 사용법

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

let promise = new Promise(function(resolve, reject) {
  // 비동기 작업을 수행합니다.
  
  let success = true; // 가정: 작업이 성공적으로 완료되었습니다.
  
  if (success) {
    resolve("작업 성공!");
  } else {
    reject("작업 실패.");
  }
});

promise.then(function(result) {
  console.log(result); // "작업 성공!"이 출력됩니다.
}, function(error) {
  console.log(error); // 실패한 경우, "작업 실패."가 출력됩니다.
});

Promise의 상태

Promise는 세 가지 상태를 가집니다:

체이닝(Chaining)

Promise의 가장 강력한 기능 중 하나는 여러 비동기 작업을 연결할 수 있다는 것입니다. .then() 메소드를 사용하여 이를 구현할 수 있습니다:

new Promise(function(resolve, reject) {
  setTimeout(() => resolve(1), 1000); // 1초 후에 숫자 1을 반환합니다.
})
.then(function(result) { // 첫 번째 .then()
  console.log(result); // 1
  return result * 2;
})
.then(function(result) { // 두 번째 .then()
  console.log(result); // 2
  return result * 2;
})
.then(function(result) { // 세 번째 .then()
  console.log(result); // 4
  return result * 2;
});

이 예제는 각 .then() 호출이 이전 호출의 결과에 기반하여 다음 작업을 수행하는 방법을 보여줍니다.

오류 처리

.catch() 메소드를 사용하여 Promise 체인에서 발생할 수 있는 오류를 쉽게 처리할 수 있습니다:

new Promise(function(resolve, reject) {
  throw new Error("에러 발생!");
})
.catch(function(error) {
  console.error(error); // 에러를 콘솔에 출력합니다.
});

이 방법을 사용하면 비동기 작업 중 발생하는 예외를 효율적으로 처리할 수 있습니다.

결론

JavaScript Promises는 비동기 작업을 다루는 강력하고 유연한 방법을 제공합니다. 이를 통해 코드의 가독성을 높이고, 오류 처리를 개선할 수 있습니다. Promises의 기본 원리와 활용법을 이해하면, 복잡한 비동기 로직도 쉽게 관리할 수 있게 됩니다.