[nodejs] 비동기 I/O 작업
Node.js에서 가장 중요한 특징 중 하나는 비동기 I/O 작업을 지원한다는 것입니다. 이는 Node.js가 I/O 작업을 처리하는 동안 다른 작업을 동시에 처리할 수 있다는 의미입니다.
비동기 I/O란?
Node.js에서 I/O 작업(파일 읽기, 네트워크 통신 등)은 비동기적으로 처리됩니다. 이는 한 작업이 완료될 때까지 대기하지 않고 다른 작업을 실행할 수 있어 애플리케이션의 성능을 향상시킬 수 있습니다.
콜백 함수
비동기 작업을 위해 Node.js는 콜백 함수를 사용합니다. 작업이 완료되면 콜백 함수가 호출되어 결과를 처리하게 됩니다.
예를 들어, 파일을 읽어오는 작업을 수행하려면 다음과 같은 방식으로 콜백 함수를 활용할 수 있습니다.
const fs = require('fs');
fs.readFile('file.txt', 'utf8', function(err, data) {
if (err) {
// 오류 처리
} else {
// 데이터 처리
}
});
위 코드에서 readFile
함수는 파일을 비동기적으로 읽어오며, 읽기가 완료되면 콜백 함수가 실행됩니다.
Promise와 async/await
Node.js 8부터는 Promise와 async/await를 지원하여 비동기 코드를 더 쉽게 작성할 수 있도록 도와줍니다.
Promise를 사용한 예시:
const fs = require('fs').promises;
fs.readFile('file.txt', 'utf8')
.then(data => {
// 데이터 처리
})
.catch(err => {
// 오류 처리
});
async/await를 사용한 예시:
async function readAndProcessFile() {
try {
const data = await fs.readFile('file.txt', 'utf8');
// 데이터 처리
} catch (err) {
// 오류 처리
}
}
이러한 방식을 사용하면 콜백 지옥(callback hell)을 피하고 코드를 더 읽기 쉽게 만들 수 있습니다.
비동기 프로그래밍은 Node.js의 강점 중 하나이므로 적절히 활용하여 효율적인 애플리케이션을 개발할 수 있습니다.