4

我有两个 .js 文件。一个发出事件,另一个监听它。代码如下所示。

发射器

var EventEmitter = require('events').EventEmitter;
utils.inherits(ConfigFileManager, EventEmitter);
var manager = new ConfigFileManager();
var watcher = chokidar.watch(CONFIG_DIR, {persistent: true});
watcher.on('add', function (path) {
    manager.emit('monitor', 'print this data');
});
watcher.on('change', function (path) {
    console.log('change event fired');
    manager.emit('monitor', 'print this data');
});
module.exports = manager;

chokidar.watch 保留事件队列并限制节点退出。现在,监听器位于不同的文件中,如下所示。

听众

var manager = require('./emitter');
manager.on('monitor', function(data) {
    console.log(data);
});

我运行“node listener.js”。第一次“添加”事件调用监听器,一切都很好。但是,当我更改文件时,会发出事件,但侦听器永远不会得到它。如果我在 listener.js 的末尾添加一个 setTimeout,则侦听器将获取事件,直到超时到期。因此,一旦侦听器脚本完成,就不会收到事件。我怎样才能让听众永远听下去?

此外,如果我将侦听器代码也保留在 Emitter.js 中,那么它会起作用,因为 chokidar.watch 会阻止脚本终止。但是,我想将它们分开以便更好地组织。

4

0 回答 0