在Node js中完成脚本完成后,使事件监听器保持活动状态

时间:2013-11-11 21:57:44

标签: node.js

我有两个.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会阻止脚本终止。但是,我希望将它们分开以便更好地组织。

0 个答案:

没有答案