[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 작업에서 매우 유용합니다.
참고 자료:
- https://developer.mozilla.org/en-US/docs/Learn/JavaScript/Asynchronous
- https://nodejs.org/api/fs.html
- https://nodejs.org/api/http.html