백엔드 개발을 하면서 자바스크립트가 어떻게 동작하는지 모르고 개발을 하게된다면
Error를 해결하는 능력을 갖지 못하게 된다는 생각이 든다.
노드에서 다루는 비동기 함수들에 대해 공부하기 전에, 먼저 자바스크립트의 동작 원리부터 알아보자.
그렇다. 자바스크립트는 동기식 언어이다.
동기란 한 작업이 실행되는 동안 다른 작업은 멈춘 상태로 유지하며 자신의 차례를 기다리는 것이다.
비동기란 어떠한 요청을 보내면 그 요청이 끝날 때까지 기다리는 것이 아니라, 응답에 관계없이 바로 다음 동작이 실행되는 방식이다.
바로 자바스크립트의 실행 환경, 즉 Runtime 과 관련이 있다.
브라우저에서의 자바스크립트 실행 환경(Runtime)에서는 자바스크립트 엔진 자체가 제공하지 않는 일부 기능인 DOM 조작이나 AJAX 같은 비동기 처리를 위한 web API를 제공한다.
또, 이를 제어하기 위해 이벤트 루프(Event Loop), 이벤트 큐(Callback Queue 혹은 task Queue)가 존재한다.
어제 스터디한 Even loop를 보면 더 이해가 쉽다
https://velog.io/@liam_jeon/TIL-20211130-이벤트-루프
자바스크립트 비동기 처리와 콜백 함수
https://joshua1988.github.io/web-development/javascript/javascript-asynchronous-operation/
https://ljtaek2.tistory.com/142