Node.js는 비동기 이벤트 기반의 서버 측 JavaScript 환경으로, 비동기 처리 방식을 사용하여 높은 성능을 제공합니다. REST API를 구축할 때 이러한 비동기 처리를 어떻게 다루어야 하는지 살펴보겠습니다.
콜백 함수 활용
Node.js에서 가장 기본적으로 사용되는 비동기 처리 방법은 콜백 함수(callback function)를 활용하는 것입니다. 이 방식은 함수가 비동기적으로 실행될 때 결과를 처리할 콜백 함수를 전달하는 것을 의미합니다.
const fs = require('fs');
fs.readFile('file.txt', (err, data) => {
if (err) {
console.error(err);
} else {
console.log(data);
}
});
위의 예시에서 파일을 읽을 때 발생하는 비동기적인 처리를 콜백 함수를 통해 다루고 있습니다.
프로미스 활용
프로미스(Promise)는 ES6에서 도입된 개념으로, 비동기 처리를 더 편리하게 다룰 수 있도록 도와줍니다. 프로미스를 사용하면 콜백 지옥을 피하고 보다 직관적인 비동기 처리를 구현할 수 있습니다.
const readFile = (file) => {
return new Promise((resolve, reject) => {
fs.readFile('file.txt', (err, data) => {
if (err) {
reject(err);
} else {
resolve(data);
}
});
});
};
readFile('file.txt')
.then(data => console.log(data))
.catch(err => console.error(err));
프로미스를 사용하면 then
과 catch
를 사용하여 성공 또는 실패에 따라 처리할 수 있습니다.
async/await 활용
더 나아가, ES7부터 도입된 async 및 await 키워드를 사용하면 비동기 처리를 보다 간단하게 다룰 수 있습니다. async 키워드로 함수를 정의하고, await 키워드를 사용하여 프로미스의 처리를 기다릴 수 있습니다.
const readFile = async (file) => {
try {
const data = await fs.promises.readFile(file);
console.log(data);
} catch (err) {
console.error(err);
}
};
readFile('file.txt');
위의 예시에서는 async 함수 내에서 await를 사용하여 파일을 읽는 비동기적인 작업을 수행하고 있습니다.
Node.js를 사용하여 REST API를 개발할 때, 위의 방법들을 통해 비동기 처리를 보다 효율적으로 다룰 수 있습니다. 콜백 함수, 프로미스, 그리고 async/await를 활용하여 성능 및 가독성을 높인 코드를 작성할 수 있습니다.
참고 자료
- Node.js 공식 문서
- MDN web docs
- Promises in JavaScript: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Promise