← 목록

Node.js 비동기 프로그래밍의 기초

작성: 2024년 12월 10일읽기: 약 3분

Node.js에서 비동기 프로그래밍은 웹 개발을 할 때 정말 중요한 부분입니다. 이는 여러분이 코드를 더 효율적으로 실행할 수 있게 해주며, 서버가 여러 작업을 동시에 처리할 수 있도록 도와줍니다. 오늘은 Node.js의 비동기 프로그래밍 기초에 대해 알아보겠습니다.

비동기 프로그래밍이란, 특정 코드의 실행이 완료될 때까지 기다리지 않고 다음 코드로 넘어가는 프로그래밍 방식을 말합니다. 이는 Node.js가 단일 스레드에서 효율적으로 작동할 수 있게 해줍니다.

콜백 함수(Callback Functions)

비동기 프로그래밍에서 가장 기본적인 개념 중 하나는 콜백 함수입니다. 콜백 함수는 다른 함수에 인자로 전달되는 함수로, 어떤 이벤트가 발생한 후 실행됩니다.

fs.readFile('example.txt', 'utf8', function(err, data) {
  if (err) {
    console.error(err);
    return;
  }
  console.log(data);
});

위 코드는 Node.js의 fs 모듈을 사용하여 파일을 비동기적으로 읽는 예제입니다. 파일 읽기 작업이 완료되면, 제공된 콜백 함수가 실행됩니다.

프로미스(Promises)

프로미스는 콜백 함수의 대안으로, 비동기 작업의 최종 성공 또는 실패를 나타내는 객체입니다. 프로미스를 사용하면 비동기 코드를 더 깔끔하게 작성할 수 있습니다.

const promise = new Promise((resolve, reject) => {
  // 비동기 작업을 수행합니다.
  if (/* 작업 성공 */) {
    resolve('성공');
  } else {
    reject('실패');
  }
});

promise.then((result) => {
  console.log(result); // '성공'
}).catch((error) => {
  console.error(error); // '실패'
});

async/await

async/await는 프로미스를 더 쉽게 사용할 수 있게 해주는 ES2017(ES8)의 기능입니다. async 함수는 항상 프로미스를 반환하며, await 키워드는 프로미스가 완료될 때까지 함수의 실행을 일시 중지합니다.

async function readFileAsync() {
  try {
    const data = await fs.promises.readFile('example.txt', 'utf8');
    console.log(data);
  } catch (err) {
    console.error(err);
  }
}

위 코드는 fs.promises.readFile을 사용하여 파일을 비동기적으로 읽는 예제입니다. async/await를 사용하면 비동기 코드를 동기 코드처럼 읽고 쓸 수 있어 코드의 가독성이 향상됩니다.

비동기 프로그래밍은 처음에는 다소 복잡해 보일 수 있지만, Node.js에서 매우 중요한 개념입니다. 위에서 소개한 기초적인 개념들을 이해하고 활용하면, 여러분의 웹 애플리케이션을 더 효율적으로 만들 수 있을 것입니다.