← 목록

JavaScript Promises와 Async/Await의 기본 원리

작성: 2024년 08월 12일읽기: 약 2분

JavaScript를 배우는 여러분, 비동기 코드에 대해 들어본 적이 있나요? 웹 개발에서는 서버에서 데이터를 가져오거나, 긴 작업을 수행하는 등의 작업을 할 때 비동기 코드가 필요합니다. 오늘은 JavaScript에서 비동기 코드를 다루는 두 가지 중요한 방법, Promises와 Async/Await에 대해 알아볼 거예요.

JavaScript Promises

Promise는 비동기 작업의 최종 성공 또는 실패를 나타내는 객체입니다. 간단히 말해, 약속이죠. 약속이 이행될 수도 있고, 어긋날 수도 있습니다. JavaScript에서는 이를 resolve (성공)와 reject (실패)로 표현합니다.

let myPromise = new Promise(function(resolve, reject) {
  // 비동기 작업을 여기에 작성
  let isSuccessful = true; // 가정
  if (isSuccessful) {
    resolve("성공!"); // 성공 시
  } else {
    reject("실패!"); // 실패 시
  }
});

myPromise.then(function(value) {
  console.log(value); // 성공 시 출력: 성공!
}).catch(function(error) {
  console.log(error); // 실패 시 출력: 실패!
});

Async/Await

asyncawait는 Promises를 더 쉽게 사용할 수 있게 해주는 문법입니다. async 함수는 항상 Promise를 반환하며, awaitasync 함수 내에서만 사용할 수 있습니다. await는 Promise가 처리될 때까지 기다립니다.

async function myAsyncFunction() {
  let result = await new Promise((resolve, reject) => {
    setTimeout(() => resolve("완료!"), 1000);
  });
  console.log(result); // 1초 후 출력: 완료!
}

myAsyncFunction();

asyncawait를 사용하면 비동기 코드를 마치 동기 코드처럼 쉽게 작성할 수 있습니다. 이는 코드를 읽고 이해하기 훨씬 쉬워집니다.

정리

JavaScript의 Promises와 Async/Await는 비동기 코드를 다루는 강력한 방법입니다. Promises는 비동기 작업의 성공 또는 실패를 나타내며, Async/Await는 이러한 Promises를 더 쉽게 사용할 수 있도록 해줍니다. 이 두 가지 방법을 잘 이해하고 사용하면, 복잡한 비동기 코드도 쉽게 다룰 수 있게 됩니다.

웹 개발을 배우는 여러분, 이제 JavaScript의 비동기 코드를 두려워하지 마세요. 오늘 배운 내용을 실습해보며, 여러분의 프로젝트에 적용해보세요!