일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
- IT
- scope
- 원본과 복사본
- 스코프
- AWS
- APPEND
- appendChild
- 생활코딩
- 인터프리터
- JavaScript
- 리커젼
- vscode
- 재귀함수
- node.js설치
- prototype
- AWS기초
- 메모이제이션
- complexity
- 기초공부
- css기초
- AWS조사
- CSS
- var
- node.js
- Big-O notation
- 개발툴
- let
- flex기본
- 코드스테이츠
- 클로저
- Today
- Total
Jveloper
2019. 06. 18 이머시브 수업 4주차 - 2일(Event Loop, Node.js (Mini-node-server)) 본문
2019. 06. 18 이머시브 수업 4주차 - 2일(Event Loop, Node.js (Mini-node-server))
Jveloper 2019. 6. 18. 21:20JavaScript - 싱글스레드 기반의 언어(코드를 순서대로 읽어나간다)
EventLoop : https://www.youtube.com/watch?time_continue=747&v=8aGhZQkoFbQ
- 콜백함수는 Callback Queue를 돌고 나오고 그냥 함수는 call Stack으로 들어갔다가 나온다
- 위에서 말했듯 자바스크립트는 싱글쓰레드기반의 언어라 순서대로 읽어나가기 때문에 예상대로라면 하나의 함수가(또는 라이브러리같은 것) 다 실행이 될때까지 아무것도 못하는 상태여야하는데,
그것을 비동기(논블로킹)를 씀으로써 queue로 넘겨서 실행하고 있게하고 나머지 함수들은 다 실행을 시키고
마지막에 기본함수들이 다 호출되는 시점에 queue에서 다 실행된 비동기를 꺼내줌으로써 호출시점을 다르게 줄 수가있다
- Settimeout함수(비동기) 1초짜리 4개를 주면 1초뒤에 전부 실행되어야할것으로 기대를하지만 그렇지가 않다
영상을 보니 총 1초씩 4초가 걸리는것같아보인다
why?
스택이 깨끗해야 렌더가 되기때문
Node.js Mini-node-server(기초개념) solo sprint
클라이언트 ⇣
서버 ⇣
[search input : node.js event handling, https://nodejs.org/ko/docs/guides/anatomy-of-an-http-transaction/]
서버단에 end()를 두번쓰면 안됨 - request 요청은 한번씩 들어오니 당연히 end로 response보내주는것도 한번씩 가야한다 !
- options는 무엇인가? 어떻게 처리해야하는가?
우선 CORS를 먼저 알아봐야한다
CORS(Cross-Origin Resource Sharing) :
다른집에 있는사람이 우리집에 있는걸 가져감
서버는 그 물음에 대해서 가져가도된다 안된다고 하는것(⇣이 부분이 이런사람만 가져가라 범위를 설정해준것)
Options 는 그거가져가도되요? 하고 물어보는거
- 한줄정리 : cors => 다른집 리소스를 가져오는것
- 한줄정리 : options => 가져가도 되는지 물어보는것
options 라는 요청(request)은 브라우저에서 자동으로 하는것
응답(response)을 준다면 그 다음에야 post 요청을 다시함
클라이언트가 10만 글자를 한꺼번에 보낸다면?
서버측에서 데이터가 들어올때 잘게잘게 찢어진 Chunk 라는 개념으로 들어옴
그럼 req.on()은 뭘까?
조각조각 찢어진 스트링들을 하나로 합쳐줌
message = ‘’ 라는것으로 합쳐주는 역할을 시킴
합쳐준다 해도 buffer 05 34 35 54 32 이런식으로 뜨게되는데 이거를 해결하는 방법이 3가지정도 있는것같다
1) 위에 적힌것처럼 setEncoding('utf-8')
2) 아래서 두번째줄을 chunk => chunk.toString()
3) message를 [] 로 바꿔주고, []에 concat을 쓰는방법
(이제 서버쪽으로와서 그런지 자바스크립트 컴파일? v8? 자바스크립트엔진 아직 개념이 잘 서지않음)
If, else if, else 까지 잘 설정을 해줘야한다
무조건 한번의 응답이 갈수있도록 else까지 설정을 해줘야함
결론 :
OPTIONS 에 대해서 아예 개념이 안잡혀있었는데
이런식으로 headers를 이용해서 이런애들만 post보내 ~~ 이런 느낌이었고,
end로 항상 끝맺음을 맺어줘야하는구나..라는것을 느꼈다
response.end() 와 return은 다르다
response.end()는 return 과는 다르게 그 뒤에줄까지 계속 실행이된다