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 : 문제점 보여준다.