[nodejs] 비동기 프로그래밍의 개념

비동기 프로그래밍은 컴퓨터 프로그램에서 작업을 동시에 실행하는 것을 의미합니다. 이것은 하나의 작업이 끝나기를 기다리지 않고, 다른 작업을 계속할 수 있는 방식으로 동작합니다. 비동기 코드는 주로 콜백 함수, 프로미스 또는 async/await 구문을 사용하여 구현됩니다.

콜백 함수

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

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

fetchData(displayData);
console.log('Fetching data...');

이 예제에서 fetchData 함수는 비동기적으로 데이터를 가져오고, 2초의 지연 후에 callback 함수를 호출합니다. 이것은 코드가 데이터를 기다리는 동안 프로그램의 실행이 멈추지 않음을 의미합니다.

프로미스

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

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

이 예제에서 fetchData 함수는 Promise를 반환하고, 2초의 지연 후에 데이터를 해결(resolve)합니다. 그런 다움 .then.catch를 사용하여 데이터의 성공 또는 실패에 따라 처리합니다.

async/await

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

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

displayData();
console.log('Fetching data...');

async/await를 사용하여 위와 동일한 비동기 작업을 수행할 수 있습니다. await는 프로미스가 처리될 때까지 코드의 실행을 일시 중지시키고, async 함수는 항상 프로미스를 반환합니다.

이러한 비동기 프로그래밍 패턴은 Node.js 및 브라우저에서 네트워크 호출, 파일 시스템 액세스 및 이벤트 처리와 같은 I/O 작업에서 매우 유용합니다.

참고 자료: