[nodejs] 비동기식 코드 리팩토링

Node.js는 비동기식 프로그래밍을 지원하여 효율적인 코드 실행을 가능케 합니다. 그러나 비동기식 코드는 보기가 어렵고 관리하기 어려울 수 있습니다. 이런 문제를 해결하기 위해 코드 리팩토링이 필요합니다.

Promise 활용

기존의 콜백 함수를 사용한 비동기 코드를 Promise로 리팩토링하는 것이 첫 번째 단계입니다.

// 기존 코드
function fetchData(callback) {
  // 비동기 작업
  setTimeout(function() {
    callback('Data fetched');
  }, 1000);
}

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

// 리팩토링된 코드
function fetchData() {
  return new Promise(resolve => {
    setTimeout(() => {
      resolve('Data fetched');
    }, 1000);
  });
}

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

Async/Await 활용

Promise를 사용한 코드도 보기가 좋아졌지만 Async/Await을 활용하면 더 깔끔한 코드를 작성할 수 있습니다.

// Promise 활용한 코드
function fetchData() {
  return new Promise(resolve => {
    setTimeout(() => {
      resolve('Data fetched');
    }, 1000);
  });
}

async function getData() {
  const data = await fetchData();
  console.log(data);
}

getData();

암묵적 반환 활용

함수에서 명시적으로 Promise를 반환할 필요 없이, 암묵적으로 반환하여 코드를 더 간결하게 만들어 줍니다.

// 기존의 Promise를 반환하는 코드
async function fetchData() {
  return new Promise(resolve => {
    setTimeout(() => {
      resolve('Data fetched');
    }, 1000);
  });
}

// 암묵적으로 반환하는 코드
async function fetchData() {
  setTimeout(() => {
    return 'Data fetched';
  }, 1000);
}

Node.js에서 비동기식 코드를 리팩토링하는 방법에 대해 알아보았습니다. 이러한 리팩토링을 통해 코드를 더욱 읽기 쉽고 유지보수하기 쉽게 만들 수 있습니다.

참조