본문 바로가기
Language/Javascript

Javascript - 비동기 프로그래밍 완벽하게 이해하기

by 아보_ 2023. 4. 7.
반응형

자바스크립트 비동기 프로그래밍 이해하기

 

자바스크립트는 웹 개발에서 가장 널리 사용되는 프로그래밍 언어 중 하나입니다. 이 글에서는 자바스크립트에서 비동기 프로그래밍에 대해 설명하고 사용하는 이유, 비동기 프로그래밍의 일반적인 접근법인 콜백, 프로미스, async/await을 살펴봅니다.

 

1. 비동기 프로그래밍 이해하기

비동기 프로그래밍은 코드의 실행 순서가 선형적이지 않은 프로그래밍 패러다임입니다. 일반적으로 I/O 작업, API 호출, 타이머 등과 같은 시간이 소요되는 작업을 처리할 때 사용됩니다. 비동기 프로그래밍은 자바스크립트에서 필수적인데, 이는 웹 애플리케이션에서 사용자 경험을 최적화하기 위해 병렬 작업을 수행하고자 하는 경우가 많기 때문입니다.

 

2. 콜백 (Callback)

콜백은 자바스크립트에서 비동기 프로그래밍을 다루는 가장 기본적인 방법입니다. 콜백 함수는 다른 함수의 인수로 전달되고, 이벤트 루프에서 이벤트가 발생하거나 작업이 완료되면 실행됩니다. 콜백을 사용하면 비동기 작업의 결과를 처리할 수 있지만, 복잡한 작업을 처리할 때 콜백 지옥이라는 문제가 발생할 수 있습니다.

function getData(url, callback) {
  fetch(url)
    .then((response) => response.json())
    .then((data) => callback(null, data))
    .catch((error) => callback(error));
}

getData('https://api.example.com/data', (error, data) => {
  if (error) {
    console.error('An error occurred:', error);
  } else {
    console.log('Data received:', data);
  }
});

 

3. 프로미스 (Promise)

프로미스는 자바스크립트의 비동기 프로그래밍을 쉽게 관리하기 위한 객체입니다. 프로미스는 성공한 경우(resolve)와 실패한 경우(reject)에 대해 두 가지 메서드를 제공합니다. 프로미스를 사용하면 코드의 가독성이 향상되고, 비동기 작업의 결과를 쉽게 처리할 수 있습니다. 프로미스는 then(), catch(), finally() 등의 메서드를 제공하여 연속적인 비동기 작업을 구성할 수 있습니다.

function getData(url) {
  return fetch(url)
    .then((response) => {
      if (!response.ok) {
        throw new Error(`HTTP error ${response.status}`);
      }
      return response.json();
    })
    .catch((error) => {
      console.error('An error occurred:', error);
    });
}

getData('https://api.example.com/data')
  .then((data) => {
    console.log('Data received:', data);
  });

 

4. async/await

async/await은 자바스크립트의 최신 비동기 프로그래밍 패턴입니다. async/await은 프로미스를 기반으로 하며, 비동기 코드를 마치 동기적 코드처럼 작성할 수 있게 해줍니다. async 키워드는 함수 앞에 추가되어 해당 함수가 비동기로 동작하도록 지정합니다. await 키워드는 프로미스가 settle 될 때까지 함수의 실행을 일시 중지시키고, 프로미스의 결과를 반환합니다.

async function getData(url) {
  try {
    const response = await fetch(url);

    if (!response.ok) {
      throw new Error(`HTTP error ${response.status}`);
    }

    const data = await response.json();
    console.log('Data received:', data);
  } catch (error) {
    console.error('An error occurred:', error);
  }
}

getData('https://api.example.com/data');

 

정리

이 가이드에서는 자바스크립트 비동기 프로그래밍의 기본 개념과 콜백, 프로미스, async/await에 대해 간단하게 살펴보았습니다. 이러한 접근 방식들을 이해하고 활용하면 웹 애플리케이션의 비동기 작업을 더 효율적이고 명확하게 관리할 수 있습니다.
반응형