Node.js 在节点js中脚本完成后保持事件侦听器处于活动状态
我有两个.js文件。一个发射事件,另一个监听事件。代码如下所示 发射器Node.js 在节点js中脚本完成后保持事件侦听器处于活动状态,node.js,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('a
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;
var manager = require('./emitter');
manager.on('monitor', function(data) {
console.log(data);
});
chokidar.watch保持事件队列并限制节点退出。现在,侦听器位于不同的文件中,如下所示
听众
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;
var manager = require('./emitter');
manager.on('monitor', function(data) {
console.log(data);
});
我运行“node listener.js”。第一次“添加”事件调用侦听器时,一切正常。但是,当我更改一个文件时,会发出该事件,但侦听器永远不会得到它。如果我在listener.js的末尾添加一个setTimeout,则侦听器将获得事件,直到超时过期。因此,一旦侦听器脚本完成,就不会收到事件。我怎样才能让听众永远倾听
另外,如果我将侦听器代码也保存在emitter.js中,那么它就可以工作,因为chokidar.watch可以防止脚本终止。但是,为了更好地组织,我想将它们分开。我知道这是非常古老的,但是你有没有为这种特殊模式找到解决方案?