Node.js Event Emitter
브라우저에서 JavaScript로 작업한 경우 마우스 클릭, 키보드 버튼 누르기, 마우스 움직임에 대한 반응 등과 같은 이벤트를 통해 사용자 상호 작용이 얼마나 처리되는지 알 수 있다. 이처럼 백엔드 측에서 Node.js도 event-driven 시스템을 이용해서 작동한다. event emiiter를 이용해서 이벤트를 발생시키고 처리할 수 있다. EventEmitter 클래스를 상속한 객체를 만들고 on() 메서드를 사용해 이벤트 리스너를 등록하면 이벤트가 발생할 때마다 등록된 콜백 함수가 실행된다.
Node.js는 event-driven javascript 런타임이다.
Observer Design Pattern
event-driven 시스템을 이용하는 것을 Observer Design Pattern이라고 한다.
이 패턴에는 특정 subject를 관찰하는 많은 Observer가 있다. 관찰자는 기본적으로 관심이 있고 해당 주제 내부에 변경 사항이 있을 때 알림 받기를 원한다. 그래서 그들은 그 주제에 스스로 등록한다. 주제에 대한 관심을 잃으면 단순히 해당 주제에서 등록을 취소한다. 때때로 이 모델은 게시자-구독자(Publisher-Subscriber) 모델이라고도 한다.
예를 들어 트위터 팔로워가 많은 유명인을 생각할 수 있다. 이 팔로워들 각각은 자신이 좋아하는 유명인의 최신 업데이트를 모두 받고 싶어한다. 따라서 관심이 지속되는 한 유명인을 팔로우할 수 있다. 그가 흥미를 잃으면 단순히 팔로우를 끊으면 된다. 여기서 우리는 팔로워를 관찰자로, 유명인을 주체로 생각할 수 있다.
Event Emitter 클래스
Node.js도 Event 모듈을 사용하여 유사한 시스템을 구축할 수 있는 옵션을 제공한다. 특히 이 모듈은 이벤트를 처리하는데 사용할 EventEmitter 클레스를 제공한다.
const EventEmitter = require('events');
const celebrity = new EventEmitter(); // 이 객체는 on 및 emission 메소드를 노출한다.
// Observer가 celebrity를 구독 중
// update post 이벤트가 발생하면 콘솔을 출력하게 리스너 등록
// on은 이벤트가 트리거될 때 실행될 콜백 함수를 추가하는데 사용된다.
celebrity.on('update post', () => {
console.log('This post is so awesome!');
});
celebrity.on('update post', () => {
console.log('I like this post!');
});
// celebrity가 update post 이벤트를 발생시킨다
celebrity.emit('update post'); // emit는 이벤트를 트리거하는 데 사용된다.
// emit()에 추가 인수로 전달하여 이벤트 핸들러에 인수를 전달할 수 있다.
celebrity.on('update post', (type) => {
console.log(`I like this ${type} post!`);
});
celebrity.emit('update post', 'image'); // I like this image post!
process events는 EventEmitter의 인스턴스 객체이다.
process.on('beforeExit', (code) => {
console.log('Process beforeExit event with code: ', code);
});
process.on('exit', (code) => {
console.log('Process exit event with code: ', code);
});
참고
https://nodejs.org/en/learn/asynchronous-work/the-nodejs-event-emitter
The Node.js Event emitter | Node.js
Node.js® is a JavaScript runtime built on Chrome's V8 JavaScript engine.
nodejs.org
https://velog.io/@ragnarok_code/EventEmitter%EB%9E%80
EventEmitter란 ?
Nodejs EventEmitter는 nodejs 애플리케이션을 만들다보면 많이 사용하게 되는 라이브러리다. 그러나 이름만 비슷할 뿐, EventEmitter와 EventLoop 사이에는 아무런 관계가 없다.Nodejs의 EventLoop는 Nodejs의 비동
velog.io
Node.js | EventEmitter란? (feat. Promise와의 차이점)
1. EventEmitter란? Node.js에서 이벤트 기반(Event-driven) 프로그래밍은 이벤트를 발생시키고 처리하는 데 사용되는 EventEmitter 클래스를 사용합니다. EventEmitter 클래스는 Node.js에서 가장 기본적인 이벤트
noodabee.tistory.com
'NODE.JS' 카테고리의 다른 글
[Node.js] 기초 http 서버 구축해보기 (0) | 2024.01.15 |
---|---|
[Node.js] Module (0) | 2024.01.15 |
[Node.js] setImmediate()과 setTimeout(), 그리고 process.NextTick() (0) | 2024.01.12 |
[Node.js] Event Loop Phase 더 알아보기 (0) | 2024.01.12 |
[Node.js] Event Loop (이벤트 루프) (0) | 2024.01.12 |
Node.js Event Emitter
브라우저에서 JavaScript로 작업한 경우 마우스 클릭, 키보드 버튼 누르기, 마우스 움직임에 대한 반응 등과 같은 이벤트를 통해 사용자 상호 작용이 얼마나 처리되는지 알 수 있다. 이처럼 백엔드 측에서 Node.js도 event-driven 시스템을 이용해서 작동한다. event emiiter를 이용해서 이벤트를 발생시키고 처리할 수 있다. EventEmitter 클래스를 상속한 객체를 만들고 on() 메서드를 사용해 이벤트 리스너를 등록하면 이벤트가 발생할 때마다 등록된 콜백 함수가 실행된다.
Node.js는 event-driven javascript 런타임이다.
Observer Design Pattern
event-driven 시스템을 이용하는 것을 Observer Design Pattern이라고 한다.
이 패턴에는 특정 subject를 관찰하는 많은 Observer가 있다. 관찰자는 기본적으로 관심이 있고 해당 주제 내부에 변경 사항이 있을 때 알림 받기를 원한다. 그래서 그들은 그 주제에 스스로 등록한다. 주제에 대한 관심을 잃으면 단순히 해당 주제에서 등록을 취소한다. 때때로 이 모델은 게시자-구독자(Publisher-Subscriber) 모델이라고도 한다.
예를 들어 트위터 팔로워가 많은 유명인을 생각할 수 있다. 이 팔로워들 각각은 자신이 좋아하는 유명인의 최신 업데이트를 모두 받고 싶어한다. 따라서 관심이 지속되는 한 유명인을 팔로우할 수 있다. 그가 흥미를 잃으면 단순히 팔로우를 끊으면 된다. 여기서 우리는 팔로워를 관찰자로, 유명인을 주체로 생각할 수 있다.
Event Emitter 클래스
Node.js도 Event 모듈을 사용하여 유사한 시스템을 구축할 수 있는 옵션을 제공한다. 특히 이 모듈은 이벤트를 처리하는데 사용할 EventEmitter 클레스를 제공한다.
const EventEmitter = require('events');
const celebrity = new EventEmitter(); // 이 객체는 on 및 emission 메소드를 노출한다.
// Observer가 celebrity를 구독 중
// update post 이벤트가 발생하면 콘솔을 출력하게 리스너 등록
// on은 이벤트가 트리거될 때 실행될 콜백 함수를 추가하는데 사용된다.
celebrity.on('update post', () => {
console.log('This post is so awesome!');
});
celebrity.on('update post', () => {
console.log('I like this post!');
});
// celebrity가 update post 이벤트를 발생시킨다
celebrity.emit('update post'); // emit는 이벤트를 트리거하는 데 사용된다.
// emit()에 추가 인수로 전달하여 이벤트 핸들러에 인수를 전달할 수 있다.
celebrity.on('update post', (type) => {
console.log(`I like this ${type} post!`);
});
celebrity.emit('update post', 'image'); // I like this image post!
process events는 EventEmitter의 인스턴스 객체이다.
process.on('beforeExit', (code) => {
console.log('Process beforeExit event with code: ', code);
});
process.on('exit', (code) => {
console.log('Process exit event with code: ', code);
});
참고
https://nodejs.org/en/learn/asynchronous-work/the-nodejs-event-emitter
The Node.js Event emitter | Node.js
Node.js® is a JavaScript runtime built on Chrome's V8 JavaScript engine.
nodejs.org
https://velog.io/@ragnarok_code/EventEmitter%EB%9E%80
EventEmitter란 ?
Nodejs EventEmitter는 nodejs 애플리케이션을 만들다보면 많이 사용하게 되는 라이브러리다. 그러나 이름만 비슷할 뿐, EventEmitter와 EventLoop 사이에는 아무런 관계가 없다.Nodejs의 EventLoop는 Nodejs의 비동
velog.io
Node.js | EventEmitter란? (feat. Promise와의 차이점)
1. EventEmitter란? Node.js에서 이벤트 기반(Event-driven) 프로그래밍은 이벤트를 발생시키고 처리하는 데 사용되는 EventEmitter 클래스를 사용합니다. EventEmitter 클래스는 Node.js에서 가장 기본적인 이벤트
noodabee.tistory.com
'NODE.JS' 카테고리의 다른 글
[Node.js] 기초 http 서버 구축해보기 (0) | 2024.01.15 |
---|---|
[Node.js] Module (0) | 2024.01.15 |
[Node.js] setImmediate()과 setTimeout(), 그리고 process.NextTick() (0) | 2024.01.12 |
[Node.js] Event Loop Phase 더 알아보기 (0) | 2024.01.12 |
[Node.js] Event Loop (이벤트 루프) (0) | 2024.01.12 |