因此,我一直试图使用chokidar作为加载添加在某个文件夹中的命令的一种方式,现在考虑到我可以找到的chokidar的唯一文档是github页面,提供的唯一示例是警报,由于两个问题,我一直难以实现这一点:我无法返回主函数的任何值--据我所知,这是因为chokidar继承了EventEmitter,但是使用包装函数应该可以解决这个问题?处理在chokidar函数中加载的文件可能会非常复杂。
因为所讨论的程序需要加载命令并在不同的点进行解析,所以解析将发生异步的。
所以我的问题很简单,我会怎么做?
下面是代码:
export default function(dir) {
let chokidar = require('chokidar');
let fs = require('fs');
let log = console.log.bind(console);
let watcher = chokidar.watch(dir, {
ignored: /(^|[\/\\])\../,
persistent: true
});
let files;
let test;
files = "TEST"
watcher
.on('addDir', path => {
log(`Directory ${path} has been found`);
})
.on('add', path => {
log(`Before : ${files}`)
test = path
log(`After : ${files}`)
//require(path)
log(`File ${path} has been found`)
})
.on('ready', () => {
log(files, test)
files = test;
log(files, test)
});
log(files)
}发布于 2017-09-20 13:59:35
在与chokidar +事件混在一起之后,答案是相当简单的:
本质上,考虑到每个事件或多或少都是自己的小程序,但是谁不能/不能直接返回值。
因此,您可以将所需的数据发送给将具体处理的另一个事件。
在我的"main.js“文件中,我需要做的就是:
let events = require('events');
var loader = new events.EventEmitter();
watchdog(cmddir, (dir) => {
loader.emit("loadcommand", dir)
loader.on('loadcommand', (file) => {
require(file);
});以下是有关event.emitters的一些相关信息:
https://stackoverflow.com/questions/45698628
复制相似问题