nodejs
-
Nodejs 동작에 대해서 알아보자nodejs 2022. 5. 7. 02:00
javascript 동작 javascript는 단일 스레드에 비동기적으로 동작하며 동시성을 갖는다. 여기서 단일 스레드와 동시성은 어울리지 않는다. 그렇다면 단일 스레드인데 어떻게 동시성을 가질 수 있을까? Node.js 기준으로 보면 libuv에서 이를 지원해준다. javascript는 싱글 스레드이나 libuv의 worker 스레드는 멀티스레드로 동작한다. 즉 싱글 스레드 js로 부터 operation을 받아 멀티 스레드로 처리하고 비 동기적으로 callback을 준다. 이 덕분에 js는 동시성을 가질 수 있게 된다. libuv란 위의 그림처럼 Node.js로부터 비동기적으로 요청을 받아서 스레드 풀에서 해당 요청을 처리한 뒤 응답을 받는 형식으로 동작된다. 그렇다면 이 요청은 어떤 방법으로 하는 걸..
-
javascript 반복문 비동기 처리하기 (for, map, forEach)nodejs 2021. 12. 12. 23:29
반복문에서 async await 는 어떻게 동작할까? array.map 을 이용해서 async await 처리하기 For 반복문을 이용해서 async await 처리하기 array.forEach를 이용해서 async await 처리하기 1,2,3은 모두 동작 방식이 다르다. 이를 코드를 통해서 알아보도록 하자 테스트 한 코드는 아래와 같다. function delay(i){ return new Promise((resolve)=>{ if (i===5) { setTimeout(resolve,3000); } else { setTimeout(resolve,1000); } }) } const a = [1,2,3,4,5,6,7,8,9,10]; async function loopTest1(){ console.log(..
-
[Node.js] this에 대해 알아보자nodejs 2021. 11. 22. 21:20
this 란? this는 흔히 자기 자신에 대한 정보를 갖고 있는 객체로 혼동할 수 있다. 하지만, 이는 잘못 알고 있는 것이다. this란 함수 호출 시점에 결정되며 함수 호출 방법에 따라 값이 결정된다. 여기서 흔히 착각하는 예를 들어보겠다. function foo(){ console.log(this.name); } var name = "jh"; foo(); 위 함수를 실행하면 결과가 어떻게 나올까? foo는 name을 갖고 있지 않기 때문에 undefined가 나온다고 생각할 수 있다. 하지만 결과는 jh이 출력된다. this는 어떻게 정해지는가 결과부터 말하자면 this는 아래의 4가지 규칙을 이용하여 정해진다. 우선순위는 아래의 번호와 같다. new 로 새로 생성 된 객체로 바인딩 된다. cal..