1つまたは複数のファイルからイベントを鳴らし、それを聞くための複数の他のファイルを作成します。同じインスタンスを共有する必要があります。私は、コードをテストするにはNode.js:複数のファイル間でオブジェクトを共有する
を行うことを試みた何これは、私は3つのファイル
eventEmitter.js
を持っている - これは新しいEventEmitter
オブジェクトを作成し、それをeventGenerator.js
をエクスポートする - これは、使用してイベントを発しますemitEvent.js
listenEvent.js
- これはemitEvent.js
私はrequire
をeventGenerator.js
とlistenEvent.s
で使用しています。オブジェクトをeventEmitter.js
にエクスポートすると、シングルトンパターンに従って同じインスタンスを共有したいと考えています。
ここにいくつかのリソースがあります投稿する前にチェックアウトしました。 免責事項:テスト用にこれらのファイルからいくつかのデザイン/コードを適用しました。ここで
- node.js event listener in another source file
- Singleton pattern in nodejs - is it needed?
- node.js eventEmitter : Listen for events across files
- Node event emitter in other modules
3つのファイルがあります。
eventEmitter.js
//eventEmitter.js
var events = require('events');
var em = new events.EventEmitter();
module.exports.universalEmitter = em;
eventGenerator.js
//eventGenerator.js
var eventEMitter = require('./eventEmitter.js');
var universalEmitter = eventEmitter.universalEmitter;
setInterval(function() {
universalEmitter.emit('Hello');
console.log("emitting event\n");
}, 3000);
listenEvent.js
//listenEvent.js
var eventEmitter = require('./eventEmitter.js');
var universalEmitter = eventEmitter.universalEmitter;
universalEmitter.on('Hello',function(){
console.log('received hello\n');
});
の問題は
listenEvent.js
イベントを受信し、すぐに終了しません。- 同じファイルを送信して聞いても問題ありません。
listenEvent.js
とeventGenerator.js
は、オブジェクトの異なるインスタンスを持つように見えます。なぜこうなった?
ここには何か些細なことがありますか?
ありがとうございます!