Node.js 6 (9/26)

‍박태우·2023년 9월 26일
0

Global, console, timer (노드 내장 객체 알아보기)

=> 원래 자바스크립트에는 없었는데, 노드가 제공하는 기능들이다

1. global

=> 아래와 같이 node 의 global 을 실행하면 무언가가 나온다.

(브라우저 에서는 window 여기서는 global 이라는 단어를 씀,
혼용하지 않기 위해 브라우저와 노드 모두에서 globalThis 라는 명령어로 통일 됨)

(또한 window 명령어와 마찬가지로 global. 을 써도되고 안써도 됨)

(그동안 우리가 쓰던 require 도 global 안에 있는 거지만 그냥 require 로 쓰는 것이다.)

(우리가 많이 쓰는 console.log 또한 global 을 생략한 것이다.)

(globalA에서 global.message; 값을 넣어두면 다른 파일에서도 globalB와 같이 사용가능하다.)

(좋은 건 아니다. 파일이 수백개 넘어가면 어디서 global 을 선언했는지 알 수 없다. 모듈로 만들자!!)

2 . console

(엄밀히 따지면 다르지만 터미널, 쉘 가 같은 용어이다.)

(console.log == 문자열 프린트
console.dir == 객체를 로깅할 때는 log 보다는 dir 가 좋다.
console.time == 시작 시간
console.timeEnd == 시작시간과 이 코드가 실행된 시간의 차이를 알려줌
console.trace == 함수 안에서 쓰면 호출 스택을 보여준다.)

(위와 같이 코드 시간을 잴때 필요)

(위와 같은 식으로 결과가 나온다.)

  • console.table 을 쓴 예시

3. 타이머

  • setTimeout 함수 : 주어진 시간 후에 hi 출력 (2000 = 2초)

  • setInterval 함수 : 이 함수를 쓰려면, 변수에 담아서 쓴다. 아래는 2초마다 hi를 출력한다. (반복)

  • clearInterval(hello) : 위의 hello 변수에 지정된 무한 반복을 종료 할 수 있다.

(계속 실행중이라 아래부분이 깨져 보이지만 clearInterval(hello)를 통해 종료 했다.

또한 setTimer 에서도 지정된 시간이 지나기 전에 clearInterval을 통해 종료 할 수 있다.

다만 이 경우 취소를 하려면 변수에 대입을 하고 그 변수를 취소 해야 한다.)

  • setImmediate : 해당 명령이 바로 실행된다.

(setTimeout에서 시간을 0으로 설정해 준 것과 동일하다.)

( 차이가 있다면 실행순서에 있다.

setImmediate를 그냥 쓰자.

But 왜 setImmediate를 써서 구지 바로 출력하는 걸까?

타이머는 안에 들어있는 함수가 background 로 가면 동시에 실행될 수도 있다. (setImmediate로 코드들을 동시에 실행되도록 보낼 수 있다.)

=> 따라서 setImmediate, setTimeout, setInterval 이 들은 그 안의 함수들을 background로 보내는 대표적인 비동기 코드라고 볼 수 있다.

(setImmediate의 경우 바로 실행되기는 하지만, 이 과정이 background로 가서 task queue로 갔다가 eventLoop에 의해서 호출 스택으로 가는 과정이라는 것이 있기 때문에, 중간에 취소 할 수도 있는 것이다.)

(위는 예시 코드와 결과이다. 실제로 immediate2가 실행되지 않은 것을 확인 가능하며, 또한 2.5 초 후에는 timeout2와 interval 을 중지 시키며 3초가 지나야 실행되는 timeout2는 실행되지 않은 것을 확인 가능하다.)

profile
잘 부탁드립니다.

0개의 댓글