以下のような、連想配列的なオブジェクトを返すが、メンバとして持っているメソッドが完了したときにイベントをemitする、EventEmitter の機能を追加したいとき、単純に EventEmitter を作って、それに持たせたいプロパティを Object.assign()
を使って合成するという作り方で問題ないでしょうか。
もう少し望ましい、効率的な書き方がある、この書き方は良くない、間違っているなどの注意点があれば教えていただけないでしょうか。
javascript
1function createEmitter(arg){ 2 let em = new require('events').EventEmitter(); 3 const handler1 = ()=>{ 4 em.foo += em.arg; 5 em.emit('done1', em.foo); 6 } 7 const handler2 = ()=>{ 8 //...some processing 9 em.foo -= em.arg; 10 em.emit('done2', em.foo); 11 } 12 Object.assign(em, { 13 foo: 5, 14 arg, 15 handler1, 16 handler2, 17 }); 18 return em 19} 20 21const em1 = createEmitter(4); 22em1.on('done1', result=>{ 23 console.log(result); 24}) 25em1.handler1();