js
콜백 지옥(callback hell)이란

콜백 지옥(callback hell)이란

콜백 지옥(callback hell)은 비동기 코드를 작성할 때 발생할 수 있는 문제로, 콜백 함수들이 중첩되어 복잡하고 가독성이 떨어지는 코드 구조를 형성하는 상황을 말합니다. 이는 특히 콜백 함수가 비동기적으로 처리되는 작업을 여러 번 중첩하여 사용하는 경우에 자주 발생합니다.

예를 들어, 서버에서 데이터를 가져와서 처리하는 코드를 생각해봅시다. 이 데이터를 가져오는 과정이 비동기적으로 처리되기 때문에 콜백 함수를 사용하여 데이터를 사용하는 로직을 작성해야 합니다. 그러나 데이터를 가져오는 비동기 작업이 여러 단계로 중첩된다면, 코드가 아래와 같이 복잡해질 수 있습니다.

getDataFromServer((data1) => {
	processData(data1, (data2) => {
		processDataFurther(data2, (data3) => {
			// ...
			// 이런식으로 콜백 함수가 중첩되어 복잡도가 증가한다.
		});
	});
});

이렇게 콜백 함수들이 중첩되면 코드를 이해하기 어렵고, 오류를 찾고 수정하기도 어려워집니다. 코드를 읽는 데 어려움이 생기며, 코드 유지보수가 어려워질 수 있습니다. 이러한 상황을 "콜백 지옥"이라고 부르며, 이는 비동기 코드를 작성할 때 주의해야 할 일반적인 함정 중 하나입니다.

콜백 지옥을 해결하기 위해 Promise나 async/await와 같은 비동기 제어 흐름 패턴을 사용하여 코드를 더 구조적이고 읽기 쉽도록 재작성할 수 있습니다. 이러한 패턴은 비동기 코드를 더욱 관리하기 쉽게 만들어주며 콜백 지옥을 피할 수 있게 도와줍니다.