Logic in Code,
Freedom in Travel.

인생 뭐 있나 사람 사는거 다 똑같지

Programming/노드 (NodeJS)

Programming/노드 (NodeJS)

[Node.js] 자바스크립트 비동기 처리 - 비동기의 완성 Async/Await

비동기를 동기처럼 작성하다 아주 먼 과거에는 콜백지옥이 있었고 조금 먼 과거에는 프로미스 지옥이 있었다. 조금 먼 과거의 프로미스 지옥은 Promise의 .then() 체이닝이 길어질수록 코드가 복잡해졌고, 특정 스코프의 변수를 공유하기 위해 파라미터를 계속 넘겨줘야 하는 문제가 여전히 남아있었다. PHP나 Python, Go와 같은 언어를 다루다 Node.js로 넘어오면서 '위에서 아래로 흐르는 직관적인 코드' 코드를 보기 힘들었던 시절이 있었다. 그리고 ES2017(ES8) 가 등장하면서 자바스크립트는 async/await 새로운 문법을 하사받았다. Async/Awaitasync/await 은 새로운 기술이 아니고 내부적으로는 Promise를 사용하지만, 이를 겉으로 보기에 동기 코드처럼 보이게 만드..

2026. 1. 9. 00:00
Programming/노드 (NodeJS)

[Node.js] 자바스크립트 비동기 처리 - 프로미스 지옥 Promise

콜백 지옥의 다음 세대Promise 가 도입되기 전 '콜백 지옥' 은 어지러웠다. Java나 Go처럼 멀티 스레드를 사용하거나, PHP처럼 동기적 흐름이 기본인 언어를 다루다 Node.js 으로 넘어오면서 비동기 흐름 제어가 가장 큰 진입 장벽이었다. 하지만 자바스크립트는 ES6(ECMAScript 2015)가 등장하면서 비동기 작업의 최종 완료 또는 실패를 나타내는 Promise가 표준으로 채택되면서 보기 좋은 비동기 코드를 작성할 수 있게 되었다. Promise: 비동기의 새로운 문법콜백 패턴에서는 비동기 처리의 결과를 콜백 함수 내부에서만 처리할 수 있었다. 하지만 Promise 는 미래의 어떤 시점에 결과를 담은 객체를 반환한다. 이 객체는 성공(resolve)하거나 실패(reject)하며 th..

2026. 1. 8. 15:43
Programming/노드 (NodeJS)

[Node.js] 자바스크립트 비동기 처리 - 콜백 지옥과 async 라이브러리

싱글 스레드 기반의 Node.js 환경에서 동적 UI, 네트워크 통신, 파일 I/O 등과 '동시성(Concurrency)' 의 문제로 비동기 처리 전략이 항상 문제다. 과거 법무법인에서 ERP를 개발하던 시절에 Ext.js를 사용하며 처음으로 진짜 '콜백 지옥'을 경험했다. 시간이 꽤 흐른 뒤, 우연히 마주한 레거시 코드에서 이 지옥을 다시 만났을 때 주님을 찾는건 어쩔 수 없었다. JavaScript 의 버전 업데이트가 진행되면서 불편한게 많이 개선되었지만 개선되기 전에 작성된 코드에는 Node.js 6 이라는 버전을 사용하는 프로젝트에서 콜백 지옥이 나를 기다리고 있었다. 콜백 지옥지금은 async/await 이 당연한 문법처럼 느껴지지만, Node.js 가 처음 등장했을 때 비동기 처리는 혁명적이었..

2025. 5. 13. 11:07