(노드에서는 백그라운드에서 돌아가는 모듈이 4개로 기본적으로 설정되어 있다.)
(결과를 보면 시간 연산 결과가 4개씩 단위에서 차이가 난다는 것을 알 수있으며, 이로서 백그라운드에서는 4개씩 단위로 돌아간다는 것을 확인 할 수 있다.)
=> 코어가 4개 이상인 컴퓨터의 경우 비효율 적이라고 생각 할 수 있음
따라서 자기 코어 개수 혹은 더 많은 코어의 개수로 실행할 수 있도록 아래와 같이 할 수 있다.
(윈도우에서는 SET을 앞에 붙여아 함, 내컴퓨터의 경우 4개 코어밖에 없어서 실행은 못해봄)
(이벤트 등록 해놓으면 나중에 이벤트를 실행했을 때 특정한 동작을 할 수 있다. 이러한 이벤트 패턴으로 여러 파일간의 동작을 공유 할 수 있다.
예를 들면 어떤 파일에 event1이 있으면 다른 파일에서 event1을 콜백으로 호출 할 수 있다.
위와 같이 'events'라는 모듈을 사용하여 구현 할 수 있다.)
(new를 붙이면 나만의 커스텀 이벤트를 만드는 것이다. EventEmitter()를 다른 변수로 new 로 만들어 여러개도 만들 수 있다.
(addListner 와 그의 별명인 on을 이용하여 이벤트를 등록 할 수 있다.
위의 경우 event2 라는 같은 이벤트에 콜백을 여러개 추가한 경우이다.
once 의 경우 event 하나가 있으면 한번만 실행되고 다음엔 안불림.)
(emit을 통해 이벤트를 호출 가능하며 once로 등록된 event3 의 경우에는 한번만 호출되고 이후 실행 안된다.)
(removeAllListeners 의 경우 매개변수와 관련된 모든 이벤트 리스너를 모두 삭제한다. 위 event2처럼 여러개 있는 경우
만약 그중 하나만 삭제하고 싶으면 removeListener와 함께 매개변수로 이벤트 변수와, 그 이벤트에 변수 (위의 경우 const listner)와 함께 넣어준다.
이때 따로 리스너 함수를 변수에 넣어주는 과정이 필요하다. event5 처럼)
(evnet2가 몇개등록되어 있는지 세는 listenerCount 이다.)
(자바스크립트에서는 에러와 예외는 큰 차이가 없다. )
(그래서 대표적인 방법이 try catch 문이다. throw 를 통해 에러를 일부로 낸다. 그 에러 발생시 catch 에서 받아서 수행한다.
=> 모든 구문에 try catch 는 좀 없어보임, try catch 를 감싸야하는 부분과 안감싸도 되는 부분을 구분해야할 필요가 있다.)
1)
(fs 를 쓰면 err 를 써야하는데 이 경우는 try catch 안해도 됨,
에러 발생해도 err 났구나 하고 넘어감, 에러 나도 프로세스가 멈추지는 않는다. console.log 를 적어야만이 나중에 로그를 보고 에러를 처리 할 수있다.)
2)
(원래 promises를 쓰면 catch를 보통 붙여주는데 catch를 붙이지 않아도 프로세스가 멈추지는 않는다.긴 문장의 경고가 발생한다.)
(promise에 catch를 안붙이면 발생하는 경고, node 버전이 올라가면 나중에 catch를 하지 않아도 강제 종료 될 수 있다고 함)
3)
(try catch 로 모든 코드를 감싸면, 실제가 에러가 나도 문제가 발생하지 않기는 하지만, 모든 코드를 감싸는 건 번거롭기에 이것 말고 에러를 한방에 처리할 수 있는 방법이 있다. porcess 객체에처럼'uncaughtException' 이벤트를 달아놓으면 모든 에러가
여기로 간다.
=> 만능 해결책이 아닌 이유 : 에러를 처리하지는 못하고 에러를 기록을 하기 때문이다. 또한 process.on 내부의 콜백함수의 모든 내용이 동작한다고 노드가 보장해주지는 못한다고 공식 문서에 있다.)
(각 예시의 첫번째 줄은 내 노드서버가 몇번 포트를 사용하고 있는지, 알 수 있는 명령어이다.
포트 번호를 알면, 노드 프로세스의 아이디가 나온다.
앞서 배운 process.pid (프로세스모듈)을 사용하여 알 수도 있다.
이런 식으로 얻은 프로세스 아이디정보를 통해
각 예시의 두번째 줄 처럼 적으면 해당 아이디의 프로세스가 강제로 종료된다.)
=> 3강에서 배운것은 외우지 말고 제공하는 것이 필요할 때 찾아보는 습관을 가지자. (강의에 없으면 공식문서 찾아보기)