node.js 이론 공부 / callback 함수에 대하여

지수·2025년 4월 24일

Node.js

목록 보기
2/4
post-thumbnail

1. 콜백 함수란?

node.js에서 callback함수는 특정 작업이 완료된 후에 호출되는 함수
다른 함수의 인수로 전달되는 함수로 비동기 작업을 처리할 때 사용

1-1) 특징

  • argument로 넘겨 받는 함수
  • 외부함수에 의해서 호출 되는 함수
  • 비동기 처리에 유용함

2. 콜백 함수를 사용하는 이유는?

node.js는 비동기, 논블로킹(Nom-blocking) 방식으로 작동함
IO작업(파일 읽기, 데이터베이스 쿼리 등)이 끝날 때 까지 기다리지 않고
다음 작업을 시작함.
이때, 비동기 작업이 끝난 후 실행할 코드가 필요함 -> 콜백 함수
(순차적으로 진행해야하는 일이 있을 때, CPU를 효율적으로 사용하기 위해서)

3. 콜백 함수의 예시

3-1) 비동기 작업에 대한 콜백 함수 사용 예시 (파일 읽기)

const fs = require('fs');

// 비동기적으로 파일을 읽는 예시
fs.readFile('example.txt', 'utf8', (err, data) => {
  if (err) {
    console.log('파일 읽기 오류:', err);
    return;
  }
  console.log('파일 내용:', data);
});
  • 파일을 비동기적으로 읽음
    세번째 인수로 콜백 함수를 받아, 파일 읽기가 완료되면 호출
    -> err : 오류가 발생하면 오류 정보를 전달
    -> data : 파일의 내용이 정상적으로 읽히면 내용을 전달

3-2) 일반적인 함수의 콜백 함수 예시

function greet(name, callback) {
	console.log(`Hello, ${name}!`);
	callback();  // 콜백 함수 호출
}

// 콜백 함수 정의
function sayGoodbye() {
	console.log('Goodbye!');
}

// greet 함수 호출 시 콜백 함수로 sayGoodbye 전달
greet('Alice', sayGoodbye);
  • name과 콜백 함수 callback을 인수로 받음
  • greet 함수는 이름을 출력한 후, callback()을 호출하여 sayGoodbye를 실행

"Hello, Alice!"가 먼저 출력 후, "Goodbye!"를 출력

4. 콜백 함수의 장점

  • 비동기 작업 처리: 비동기적으로 실행되는 작업이 끝난 후 실행할 작업을 콜백 함수로 정의할 수 있어 프로그램이 대기하지 않고 다른 작업을 계속할 수 있음
  • 유연성: 코드에서 필요한 부분을 콜백 함수로 전달해 재사용 가능한 구조를 만들 수 있음

5. 콜백 지옥 : 콜백 함수의 단점

콜백 함수가 중첩되면 가독성이 떨어지고,
코드 관리가 어려워지는 상황을 콜백 지옥이라고 함

콜백 지옥의 예시

fs.readFile('file1.txt', 'utf8', (err, data1) => {
if (err) throw err;
  	fs.readFile('file2.txt', 'utf8', (err, data2) => {
	if (err) throw err;
    	fs.readFile('file3.txt', 'utf8', (err, data3) => {
		if (err) throw err;
			console.log(data1, data2, data3);
    	});
	});
});

이를 보완하기 위해 promise, async/await를 사용함

profile
개발자 꿈나무 여고생

0개의 댓글