[javascript] 비동기 처리(Promise, async/await)

비동기 처리는 자바스크립트에서 매우 중요한 개념입니다. 동기적인 방식으로 코드를 실행하면 작업이 끝날 때까지 다른 작업을 수행할 수 없어서 프로그램의 동작이 멈추게 될 수 있습니다. 이러한 문제를 해결하기 위해 자바스크립트에서는 비동기 처리를 지원하고 있습니다. 이번 포스트에서는 비동기 처리를 위한 Promise와 async/await에 대해 알아보겠습니다.

Promise

Promise는 자바스크립트에서 비동기 처리를 위한 객체입니다. 비동기 작업을 수행할 때 결과값을 약속(promise)해주는 역할을 합니다. Promise는 세 가지 상태를 가지고 있습니다.

Promise는 다음과 같은 방식으로 사용됩니다.

const promise = new Promise((resolve, reject) => {
  // 비동기 작업 수행
  // 작업이 성공적으로 완료되면 resolve 호출
  // 작업이 실패하면 reject 호출
});

promise
  .then((result) => {
    // 작업이 성공적으로 완료되면 호출
  })
  .catch((error) => {
    // 작업이 실패하면 호출
  })
  .finally(() => {
    // 작업이 완료된 후 항상 호출
  });

async/await

async/await는 Promise를 더욱 간편하고 가독성 좋게 사용할 수 있도록 해주는 문법입니다. async 함수는 항상 Promise를 반환하며, await 키워드는 Promise가 이행될 때까지 코드의 실행을 일시 정지합니다.

예를 들어, 다음과 같이 async/await를 사용하여 비동기 작업을 처리할 수 있습니다.

async function doSomething() {
  try {
    const result = await promise; // promise가 이행될 때까지 기다림
    // 결과를 처리하는 작업
  } catch (error) {
    // 에러 처리 작업
  } finally {
    // 항상 실행되는 작업
  }
}

doSomething();

결론

비동기 처리는 자바스크립트에서 매우 중요하며, Promise와 async/await는 이를 더욱 편리하게 처리할 수 있도록 도와줍니다. 비동기 작업을 수행할 때는 Promise나 async/await를 적절히 활용하여 코드를 관리하고 가독성을 높이는 것이 좋습니다.

참고 자료: