Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/41.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Node.js 在节点js中脚本完成后保持事件侦听器处于活动状态_Node.js - Fatal编程技术网

Node.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

我有两个.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;
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可以防止脚本终止。但是,为了更好地组织,我想将它们分开。

我知道这是非常古老的,但是你有没有为这种特殊模式找到解决方案?