Programming Language/JavaScript(Node.js)(7)
-
Promise
생성 즉시 메인스레드에서 executor(생성자에 전달되는 함수)가 실행되고 실행이 끝나고 promise 객체가 리턴되며 .then으로 등록한 콜백은 콜스텍이 완료되어야 호출된다. Promise Chaining then이나 catch 메소드는 전달된 함수가 리턴한 프로미스나 리턴값으로 resolve 하는 새 프로미스를 리턴하므로 연속해서 then을 호출하는 것이 가능하다. 에러(reject) 처리 executor(프로미스 시작 함수)나 콜백에서 reject 호출 또는 에러가 던져질 경우 체인을 타고 내려가다가 가장 가까운 catch문에서 처리되고 그 catch문 다음 체인부터 시작한다. async & await async 함수 앞에 async를 붙이면 해당 함수를 promise로 바꿔 promise 객체..
2022.02.06 -
Prototype과 상속
function Person(name) { // 가독성을 위해 함수 내부에서는 속성만 정의한다. this.name = name; } // prototype으로 선언하면 메모리에 한 번만 할당된다(like java-static). Person.prototype.hello = function () { console.log(`Hello ${this.name}`); }; const p = new Person('gm'); prototype(sub-namespace)이란? 프로토타입 체인을 통해 상속하고자 하는 속성과 메소드를 담아두는 객체(버킷) prototype 객체에 접근하기 constructorName.prototype 인스턴스에서 접근하기 Object.getPrototypeOf(obj) obj.__prot..
2022.02.06 -
[Node.js] socket.io - namespace, room 개념 정리
Room(Channel) 소켓의 집합 socket.join(roomName), socket.leave(roomName)으로 room join/leave server.to(roomName).emit으로 room에 broadcast Namespace Room의 집합, 디폴트: / server.of(namespaceName)으로 생성해 Server 인스턴스와 동일하게 다룸 접속 시 접속하려는 namespace 명시 Reference https://berkbach.com/node-js%EC%99%80-socket-io%EB%A5%BC-%EC%9D%B4%EC%9A%A9%ED%95%9C-%EC%B1%84%ED%8C%85-%EA%B5%AC%ED%98%84-1-cb215954847bhttps://socket.io/do..
2022.02.06 -
CORS(Cross Origin Resource Sharing, 교차 출처 리소스 공유)
Origin(출처): 프로토콜, 도메인, 포트 e.g. https://www.google.com SOP(Same Origin Policy) 보안 상의 이유로, 브라우저는 fetch() 등을 통한 교차 출처(브라우저의 origin과 다른 origin) 요청을 제한합니다. 이런 브라우저의 정책을 SOP(Same Origin Policy)라고 합니다. CORS(Cross Origin Resource Sharing) SOP 때문에 외부 리소스 사용이 제한되지만 실제로는 웹페이지에서 외부 리소스가 필요한 경우가 많습니다. 그래서 Cross Origin의 Resource Sharing을 허용하게 해주는 방식이 CORS입니다. 동작 방식 CORS에는 서버에 바로 요청을 보내는 simple req와 options 메소..
2022.01.16 -
JS엔진과 eventloop
(여기서 설명하는 내용은 일반적인 컨셉으로 자세한 구현은 브라우저마다 다릅니다) JS 엔진 Single thread로 작동하며 크롬 V8도 여기에 해당한다. Stack 현재 실행중인 함수가 올라가는 call stack (main함수 같은 프로그램의 entry point는 anonymous func다) Heap 메모리 브라우저 영역 Multi threading 가능 WebAPIs setTimeout 등을 처리하는 브라우저가 제공하는 API로 Node.js에서는 일반적인 C++ API로 대신한다. Event loop & Callback queue 이벤트루프는 stack과 queue를 주시하다가 call stack이 empty가 되면 callback queue에 있는 함수를 call stack에 넣고 실행시킨..
2022.01.16