[javascript] 리액트에서 비동기 처리 방법

리액트 애플리케이션을 개발할 때 비동기 작업을 다루는 것은 중요합니다. 네트워크 요청, 데이터베이스 조회, 파일 읽기 등과 같은 비동기 작업은 애플리케이션의 성능을 높이고 사용자 경험을 향상시키는 데 중요한 역할을 합니다.

1. Promises와 async/await

가장 일반적인 비동기 처리 방법은 Promises와 async/await 구문을 사용하는 것입니다.

function fetchData() {
  return new Promise((resolve, reject) => {
    // 비동기 작업 수행
    if (/* 작업 성공 */) {
      resolve(data);
    } else {
      reject(error);
    }
  });
}

// async/await를 사용하여 비동기 작업 처리
async function fetchDataAsync() {
  try {
    const data = await fetchData();
    // 데이터 처리
  } catch (error) {
    // 에러 처리
  }
}

2. Axios를 이용한 HTTP 요청 처리

HTTP 요청을 처리하기 위해 axios와 같은 라이브러리를 사용하는 것이 일반적입니다. axios는 간편한 API와 함께 다양한 기능을 제공하여 네트워크 요청을 처리하는 데 용이합니다.

import axios from 'axios';

// GET 요청
axios.get('https://api.example.com/data')
  .then(response => {
    // 데이터 처리
  })
  .catch(error => {
    // 에러 처리
  });

// POST 요청
axios.post('https://api.example.com/data', { data: payload })
  .then(response => {
    // 데이터 처리
  })
  .catch(error => {
    // 에러 처리
  });

3. Fetch API 활용

Fetch API는 최신 웹 표준으로, 네트워크 요청에 대한 표준화된 방법을 제공합니다. 모던한 브라우저에서는 기본으로 내장되어 있어 추가 라이브러리를 사용하지 않고도 네트워크 요청을 간단하게 처리할 수 있습니다.

// GET 요청
fetch('https://api.example.com/data')
  .then(response => response.json())
  .then(data => {
    // 데이터 처리
  })
  .catch(error => {
    // 에러 처리
  });

// POST 요청
fetch('https://api.example.com/data', {
  method: 'POST',
  body: JSON.stringify(payload),
  headers: {
    'Content-Type': 'application/json'
  }
})
  .then(response => response.json())
  .then(data => {
    // 데이터 처리
  })
  .catch(error => {
    // 에러 처리
  });

비동기 처리는 리액트 애플리케이션에서 핵심적인 부분이므로, 위의 방법 중 적절한 방법을 선택하여 애플리케이션의 요구에 맞게 비동기 작업을 처리하는 것이 중요합니다.