blocking vs. non-blocking (in terms of Node.js)
"As an asynchronous event-driven JavaScript runtime, Node.js is designed to build scalable network applications." (nodejs.org)
event-driven also means "non-blocking", in other words,
비동기가 완전 논블락킹은 아니지만
blocking = 응답없음.. 기다리고 있어야만하는 상황이라면, 논블락킹은 두 개가 동시에 진행되도,
"promise쓸 떄, then을 동일선상에 표현하려고 작성해보면 가독성이 좋아"
비동기 vs. 동기
동기, 비동기(콜백으로 실행됨)는 "시간적"의미를 가지는 반면, blocking, non-blocking은 실행가능여부를 말하는듯
blocking vs. non-blocking
블로킹: 다음 함수의 실행이 현재 함수의 종료 이후에 이루어 지는 경우
논블로킹: 다음 함수의 실행이 현재 함수의 종료를 기다리지 않는 경우
모래시계가 돌면서 화면이 하얗게 뜨는 경우가 블록킹(의도적인 무한루프? 외부에서 탈출조건을 넣어주는)이라고..
하지만 자바스크립트에선 둘이 비슷하게? 똑같이 움직임.
Node.js를 특성으로 불리는 이벤트 기반 및 논블로킹 I/O 모델은 유저의 클릭이나 네트워크에 리소스를 요청하는 이벤트가 논블로킹으로 이루어지는 I/O(Input을 주면 Output을 반환하는) 모델을 말한다.
정리하면, Node.js는 JavaScript를 기계가 이해할 수 있도록 컴파일하여 구동하고, 이벤트 기반의 non-blocking 모델로 빠른 속도의 장점을 갖는 런타임이라고 설명할 수 있다.
event loop