[typescript] async/await와 try-catch 문의 조합

TypeScript에서 async/awaittry-catch 문을 함께 사용하는 것은 비동기 작업을 수행하고 예외를 처리하는 효율적인 방법입니다.

이 문서에서는 어떻게 async/await 키워드와 try-catch 문을 사용하여 안정적이고 가독성 있는 비동기 코드를 작성하는지에 대해 살펴보겠습니다.

1. async/await 소개

async/await는 JavaScript 및 TypeScript의 비동기 처리를 위한 패턴 중 하나로, ES2017부터 도입되었습니다. 이 패턴을 사용하면 비동기 코드를 동기식 코드처럼 작성할 수 있습니다.

async function fetchData() {
  try {
    let data = await fetch('https://api.example.com/data');
    return data.json();
  } catch (error) {
    console.error('Error fetching data:', error);
  }
}

2. try-catchawait

try-catch 문은 await 키워드로 실행되는 비동기 함수에서 발생할 수 있는 예외를 처리하는 데 사용됩니다.

async function fetchData() {
  try {
    let data = await fetch('https://api.example.com/data');
    return data.json();
  } catch (error) {
    console.error('Error fetching data:', error);
    throw error; // 예외를 상위 호출자에게 전파
  }
}

3. async/awaitPromise.reject()의 차이

async/await를 사용하면 try-catch 블록을 통해 예외를 처리할 수 있습니다. 반면에 Promise.reject()를 사용하는 경우에는 명시적으로 예외를 처리해야 합니다.

// async/await와 try-catch 사용
async function fetchData() {
  try {
    let data = await fetch('https://api.example.com/data');
    return data.json();
  } catch (error) {
    console.error('Error fetching data:', error);
    throw error;
  }
}

// Promise.reject()를 사용하는 경우
function fetchData() {
  return fetch('https://api.example.com/data')
    .then(response => {
      if (!response.ok) {
        throw new Error('Network response was not ok');
      }
      return response.json();
    })
    .catch(error => {
      console.error('Error fetching data:', error);
      return Promise.reject(error);
    });
}

async/awaittry-catch 문을 사용하면 비동기 코드를 작성하고 예외를 처리하는 데 훨씬 편리하고 가독성이 높아집니다.

이상으로 TypeScript에서 async/awaittry-catch 문의 조합에 대한 내용을 알아보았습니다. 만약 추가적인 질문이 있으시다면 언제든지 문의하시기 바랍니다.

참고자료