일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
- object
- toString
- 출처 : https://webdir.tistory.com/506
- 게시판
- http://jeonghwan-kim.github.io/dev/2019/06/25/react-ts.html
- 출처 : https://joshua1988.github.io/web-development/javascript/promise-for-beginners/
- https://velog.io/@velopert/create-typescript-react-component
- Today
- Total
Back Ground
Node - 이벤트 본문
이벤트
- 이벤트 생성하기
process에 on 함수를 사용하여 특정 이벤트를 만들 수 있다.
생성 방법은 on()
1 | process.on('이벤트네임' , callback); | cs |
이렇게 on 함수를 사용하여 이벤트네임을 정하고
콜백에 이벤트 함수를 만들어주면된다.
생성한 이벤트 호출방법은 emit()
1 | process.emit('이벤트네임'); | cs |
이렇게 호출 할 수 있다.
예제를 보자면
JS
1 2 3 4 5 6 7 8 9 10 11 | process.on('exit',function(){ console.log('exit 이벤트 발생'); }); process.on('tick', () => { console.log('tick 이벤트 발생'); }); console.log('2초후에 시스템 종료!'); setTimeout(()=>{ // process.exit(); process.emit('tick'); },2000); | cs |
예제를 보면 exit는 process 함수에 존재하는 이벤트 종료 함수 이고
우리가 만들 함수는 tick이라는 이름의 함수를 만들어
seTimeout을 이용하여 2초후 호출하게 만들었다.
EventEmitter Class를 상속하여 사용하기
ES5 방식
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 | const util = require('util'); const {EventEmitter} = require('events'); //[ES5] let Calc = function(){ var self =this; this.on('stop',function(){ console.log('Calc에 stop evnet 전달 됨'); }); }; Calc.prototype.add = function(a,b){ return a + b; } util.inherits(Calc,EventEmitter); module.exports = Calc; module.exports.title = 'calculator'; | cs |
ES6 방식
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 | const util = require('util'); const {EventEmitter} = require('events'); //[ES6]class로 선언할 때는 필드 없이 오직 메소드만 선언 class Calc extends EventEmitter{ constructor(){ super(); this._this= this; this.on('stop',function(){ console.log('Calc에 stop evnet 전달 됨'); }); } add(x,y){ return x+y; } } module.exports = Calc; module.exports.title = 'calculator'; | cs |
EventEmitter는 Node.js의 내장되어져 있는 옵저버 패턴이다.
대기를 하고 감시 하고 있다가 이벤트시 감지하여 실행해주는 방식인데
EventEmitter Class를 불러오기 위해선 컨스트럭터를 통해 this.로 EventEmitter에 접근하여
on함수를 사용 할 수 있게 된다.
1 | this._this= this; | cs |
이런식으로 this를 따로 ES5방식 처럼 self를 calc의 this에 넣어서 보관할수있다.
ES6방식으로 짜놓은 코드는 self대신 변수명을 _this로 바꿨다.
그런 다음 calc를 내보내준다.
ES6에서는 class안에만 메소드를 넣어 주어야 하는데
초기 생성자 constructor를 통하여 지정해줄 수 있다.
constructor 상속시 super를 반드시 넣어주어야한다.
다른 js파엘에서
1 2 3 4 | let Calc = require('./sun01_ex12_eventEmit'); let calc = new Calc(); calc.emit('stop'); | cs |
상속받았던 위 예제 파일을 불러와
인스턴스화 시킨 후
calc에 들어있던 on.('stop') 함수를
emit으로 불러올 수 있다.
'Javascript > Node.js' 카테고리의 다른 글
NodeJS - NodeJS란 (1) | 2019.10.12 |
---|---|
Node - 한국소프트웨어인재개발원 (0) | 2019.03.17 |
Node - 자식 프로세스 [child_process] (0) | 2019.03.11 |
Node - 외부 명령어를 실행 해주는 모듈 [shelljs] (0) | 2019.03.11 |
Node - 시멘틱 버전 체크를 위한 모듈 [semver] (0) | 2019.03.11 |