Node.jsのEventEmitterは便利なんですがすべてのイベントを取得できません。
何で実装していないのかよくわかりません。
EventEmitter2というEventEmitterを便利にしたものがありこれを使えば良いのですが、更新が止まっています...
頑張ればできるんじゃねと思って書いたら数分でできたのメモ的な意味を込めて記事にしてます。
↓
WildEventEmitter作りました、この記事の内容をモジュール化しただけなのでめんどいなって思った人がいたら使ってください.(tsだと型エラーうるさいのでやめたほうがいいです いい方法教えて)
コード
index.js
// いつものEventEmitter
const EventEmitter = require("events");
// いつものEventEmitterを拡張
class ExtendEventEmitter extends EventEmitter {
// emitされた内容を"*"に再emit
emit(name, ...args) {
return super.emit("*", name, ...args);
}
}
// 拡張したEventEmitter
const event = new ExtendEventEmitter();
// ワイルドカードでイベントを受ける
event.on("*", (name, ...callback) => {
console.log(`name: ${name} |`, ...callback);
});
/* emit */
event.emit("ready", "ready...");
event.emit("number", 1, 2, 3, 4);
event.emit("array", ["a", "b"]);
event.emit("object", { "abc": 123, "def": 456 });
結果
name: ready | ready...
name: number | 1 2 3 4
name: array | [ 'a', 'b' ]
name: object | { abc: 123, def: 456 }