Node.js 교과서 2

Crmal·2021년 10월 13일
0

Node.js TextBook

목록 보기
2/3
post-thumbnail

3.4 노드 내장 객체 알아보기

//globalA.js
module.exports = () => global.message;
//globalB.js
const A = require('./globalA');

global.message = '안녕하세요';
console.log(A());

다음 코드는 global객체를 활용하는 예제로 전역객체를 활용하는 방법이다.
globalB에서 global의 변수에 '안녕하세요'를 담고 a를 출력할시 '안녕하세요'가 출력된다.


//console.js
const string = 'abc';
const number = 1;
const boolean = true;
const obj = {
  oustside: {
    inside: {
      key: 'value',
    },
  },
};

console.time('전체 시간');
console.log('평범한 로그입니다 쉼표로 구분해 여러 값을 찍을 수 있습니다');
console.log(string, number, boolean);
console.error('에러 메시지는 console.error에 담아주세요');

console.dir(obj, { colors: false, depth: 2});
console.dir(obj, { colors: true, depth: 1});

console.time('시간 측정');
for (let i = 0; i < 100000; i++){
  continue;
}
console.timeEnd('시간 측정');

function b(){
  console.trace('에러 위치 추적');
}
function a(){
  b();
}
a();

console.timeEnd('전체 시간');

다음코드는 console함수의 다양한 기능들을 표현한 기능이다

console.time(레이블) : console.timeEnd(레이블)과 대응되어 같은 레이블을 가진 time과 timeEnd사이의 시간을 측정합니다.
console.error(에러 내용) : 에러를 콘솔에 표시합니다.
console.dir(객체, 옵션) : 객체를 콘솔에 표시할 때 사용합니다.
첫 번째 인자로 표시할 객체를 넣고, 두 번째 인자로 옵션을 넣습니다.
옵션의 colors를 true로 하면 콘솔에 색이 추가되어 보기가 한결 편해집니다. depth는 객체 안의 객체를 몇 단계까지 보여줄지를 결정합니다.
기본값은 2입니다.
console.trace(레이블) : 에러가 어디서 발생했는지 추적 할 수 있게 해줍니다.


//timer.js
const timeout = setTimeout(() => {
  console.log('1.5초 후 실행');
}, 1500);

const interval = setInterval(() => {
  console.log('1초마다 실행');
}, 1000);

const timeout2 = setTimeout(() => {
  console.log('실행되지 않습니다1');
}, 3000);

setTimeout(() => {
  clearTimeout(timeout2);
  clearInterval(interval);
}, 2500);

const immediate = setImmediate(() => {
  console.log('즉시 실행');
});

const immediate2 = setImmediate(() => {
  console.log('실행되지 않습니다2');
});

clearImmediate(immediate2);

다음코드는 타이머 기능을 제공하는 함수를 표현한 예제입니다.
중요한부분은
setImmediate - 콜백 함수 즉시 실행
setTimeout - 주어진 밀리초 이후 콜백 함수 실행
setInterval - 주어진 밀리초마다 콜백 함수 반복 실행

clearTimeout,clearInterval,clearImmediate - 각 함수 실행취소


//nestTick.js
setImmediate(() => {
  console.log('immediate');
});
process.nextTick(() => {
  console.log('nextTick');
});

setTimeout(() => {
  console.log('timeout');
}, 0);
Promise.resolve().then(() => console.log('promise'));

다음 코드는 nextTick에대한 예제입니다.
process.nextTick은 setImmediate setTimeout보다 먼저 실행됩니다 다른 콜백들보다 우선시되는 함수 이부분은 마이크로태스크라고 따로 구분지어 부릅니다.


//exit.js
let i = 1;
setInterval(() => {
  if (i === 5) {
    console.log('종료!');
    process.exit();
  }
  console.log(i);
  i += 1;
}, 1000);

다음 코드는 단순히 노드를 수동으로 멈추게하는 기능입니다.

0개의 댓글