BackEnd/Node.js

BackEnd/Node.js

[Nodejs] 비동기 API라고 해서 다 같은 비동기가 아니다.

비동기 API를 이용할 때 Promise.all로 비동기 요청을 병렬 처리하는 경우가 많다.그런데 병렬 처리시 어떤 비동기 API를 사용하느냐에 따라서 몇몇 요청이 지연되는 케이스가 생길 수도 있다. 비동기 API 처리 과정Nodejs에서 비동기 처리는 libuv 라이브러리가 담당한다.libuv는 비동기 요청이 들어오면 커널단에서 비동기적으로 처리가 가능한지 확인한다. 커널에서의 비동기 처리 가능 유무에 따라 다음과 같이 동작한다.- 커널에서 비동기 처리 지원 O -> 메인스레드에서 커널에 비동기 작업 요청- 커널에서 비동기 처리 지원 X -> 스레드풀의 스레드에서 커널에 동기 작업 요청 libuv는 비동기 I/O를 blocking하지 않게 설계되어 있기 때문에 메인스레드에서 직접 커널에 요청을 날린다...

BackEnd/Node.js

[JS] bytecode로 분석해보는 var, let, const 호이스팅

해당 글은 node v16.13.0을 기준으로 작성되었습니다. 본인이 사용하는 node 버전에 따라 인터프리터가 생성하는 바이트코드가 달라질 수도 있습니다. 일반적으로는 var는 호이스팅이 되어서 중복 선언이 가능하다고 알려져있고, let, const는 호이스팅이 되지 않아 중복 선언이 되지 않는다고들 알고 있다. 여기서 더 나아가서 let, const가 호이스팅이 되지만 TDZ에 의해서 변수가 초기화되기 전까지는 접근이 불가능하다는걸 알고 있는 사람들도 많을 것이다. 그러면 여기서 더 더 나아가서, v8 엔진이 자바스크립트 코드를 어떻게 해석하길래 호이스팅이나 TDZ가 우리가 생각하는대로 동작하는지 알아보자. 바이트코드를 출력하기 위해서는 --print_bytecode 옵션을 이용하면 된다. ex) n..

Giwonnnnnnn
'BackEnd/Node.js' 카테고리의 글 목록