[javascript] 자바스크립트의 비동기 처리 방법: 콜백(callback), 프로미스(Promise), async/await

콜백(callback), 프로미스(Promise), async/await은 자바스크립트에서 비동기 처리를 다룰 때 사용되는 주요한 방법들이다.

콜백(callback)

콜백은 가장 기본적인 비동기 처리 방법으로, 함수 A를 실행한 후에 함수 B를 실행하도록 지정하는 방식이다.

function fetchData(callback) {
  setTimeout(() => {
    callback('Data received');
  }, 1000);
}

function displayData(data) {
  console.log(data);
}

fetchData(displayData);

콜백 지옥(callback hell)이 발생할 수 있어서 여러 개의 중첩 콜백 함수를 사용할 경우 코드를 관리하기 어려울 수 있다.

프로미스(Promise)

프로미스는 ES6에서 도입된 콜백 지옥을 해결하기 위한 개념이다. 프로미스는 비동기 작업이 성공 또는 실패 시에 대한 결과를 나타내는 객체이다.

function fetchData() {
  return new Promise((resolve, reject) => {
    setTimeout(() => {
      resolve('Data received');
    }, 1000);
  });
}

fetchData()
  .then((data) => {
    console.log(data);
  })
  .catch((error) => {
    console.error(error);
  });

프로미스는 then(), catch() 메소드를 사용하여 성공 또는 실패 시에 각각의 처리를 할 수 있다.

async/await

async/await는 ES8에서 도입된 문법으로, 프로미스를 더 쉽게 다룰 수 있도록 도와준다.

async function fetchData() {
  return new Promise((resolve, reject) => {
    setTimeout(() => {
      resolve('Data received');
    }, 1000);
  });
}

async function displayData() {
  try {
    const data = await fetchData();
    console.log(data);
  } catch (error) {
    console.error(error);
  }
}

displayData();

async 키워드는 함수가 항상 프로미스를 반환함을 나타내고, await는 프로미스가 처리될 때까지 기다렸다가 결과를 받는다.

요약

콜백(callback), 프로미스(Promise), async/await은 모두 비동기 처리를 다루는 강력하고 유연한 방법들이다. 선택하는 방법은 상황과 개발자의 선호에 따라 다를 수 있다.

참고문헌: