nodejs

Nodejs에서 동기와 비동기 1

퓨처디벨로퍼 2021. 11. 28. 20:56

동기적: 오랫동안 처리돼야 되는 경우에도 기다렸따가 그 다음에 일을 처리하는 것.

비동기적: 병렬적으로 동시에 여러가지 일을 처리한는 것. 

 

node.js는 비동기적 처리를 하기위한 아주 좋은 기능을 가지고 있다. 효율적이지만 복잡. 

 

동기와 비동기

 

 

var fs = require('fs');

///readFileSync ->동기적인 방법 처리.
/*
console.log('A');
var result = fs.readFileSync('systax/sample.txt', 'utf8');
console.log(result);
console.log('C');
*/


console.log('A');
//만든사람들이 비동기적 방식을 선호. 3번째 자리에 콜백이 오도록 적혀있다. readFileSync는
//return 값을 주지만 readFile은 return값 대신 함수를 세번째 인지로 줘야함. 파일 읽는 작업
//이 끝나면 세번째 인자로 준 함수를 node.js가 실행시키면서 첫번째 인자에 에러가 있다면 에러를
// 인자로 제공하고 두번째 파라메터에는 파일의 내용을 인자로서 공급.
fs.readFile('systax/sample.txt', 'utf8', function(err, result){
  console.log(result);   //얘는 얘대로 동작하다 작업이 끝나면 함숙가 호출되면서 코드가 나중에실행.
});
console.log('C');

 

callback

 

 

/*function a(){
  console.log('A');
}
*/
//이름이 없는 함수: 익명함수
// 자바스크립트에서는 함수가 값이다.
var a = function(){
  console.log('A');
}

/*굉장히 오래걸리는 함수. 이 기능에 대한 실행이 끝난 다음에 이 기능을 실행한 쪽에게 함수가
실행이 끝났으니 다음 일을 하세요. 라고하고싶다면 이 함수가 인자로 콜백을 받으면 된다. */
function slowfunc(callback){
     callback();
}

slowfunc(a);

패키지 매니저와 PM2

 

 

NPM : node.js에서 광범위하게 사용되고 있고있는 패키지 매니저

 

PM2: 실행중인 프로그램(우리가 node.js에서 만든 프로그램 main.js). 

 - 우리가 만든 프로세스를 감시하고 있다가 꺼지면 다시 켜주는 역할.

 - 파일이 수정되는지 관찰, 수정되면 자동으로 프로그램을 껐다 다시 켜줌. 수정할때마다 껐다 키는 불편함을 제거. 

 

1. npm install pm2 -g : pm2 설치

2. pm2 start main.js : 실행

   pm2 monit : pm2에 의해 실행되고 있는 프로그램들이 보인다. 

   pm2 stop main : 메인이 꺼지면서 stop

   pm2 start main.js --watch : 감시하고있다가 바꾸면 바로 반영 but 문제를 바로 보여주지 않는다

     -> pm2 log : 문제점 보여준다.