EventEmitter
Node.js 로 이벤트를 건내고 처리하는 객체
이벤트 등록
const eventListener = new EventEmitter();
eventListener.on("이벤트명", (보낸값) => {
// 콜백처리
});
이벤트 발생
const eventListener = new EventEmitter();
eventListener.emit("이벤트명", 보넬 값);
당연하지만 등록 & 발생 시 사용하는 EventEmitter 객체는 같은 걸 사용해야함
EventEmitter 활용
import { EventEmitter } from "events";
import mysql = require("mysql");
// 이벤트 리스너 사용
const eventListener = new EventEmitter();
let connection: mysql.Connection | undefined;
function CreateDBConnection(DBConfig: mysql.ConnectionConfig) {
const dbconect = mysql.createConnection(DBConfig);
dbconect.connect((err) => {
if (err) {
eventListener.emit("error", err);
} else {
connection = dbconect;
eventListener.emit("connected", dbconect);
}
});
}
eventListener.on("connected", (dbconect: mysql.Connection) => {
console.log("DB 연결 완료");
});
// Promise 와 결합하여 사용할때
function getDBConnection(): Promise<mysql.Connection> {
return new Promise((resolve, reject) => {
if (connection) {
resolve(connection);
} else {
eventListener.on("connected", (dbconect: mysql.Connection) => {
resolve(dbconect);
});
}
});
}
Callback 또는 Promise로 반환되는 비동기 작업에 결과로 나온 변수를 전역적으로 사용하려고 할 때 사용하기 좋은 방법
예를들어 어떤 비동기 작업이 해당 작업을 호출하지 않은 곳에서도 해당 작업이 완료됬는지 확인 할때 쓰기 좋음