所以我一直在尝试使用 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)
}
答案 0 :(得分:0)
在与chokidar +事件混合之后,答案非常简单:
基本上假设每个事件或多或少都像它自己的小程序,但谁不能/不能直接返回一个值。
因此,您可以向另一个专门处理的事件发出所需的数据。
在我的情况下,我的" main.js"文件我需要做的就是:
df$id <- row.names(df) # to create ID's for the points
df2 <- merge(df, df, by = NULL ) # the first cross join
df3 <- merge(df2, df, by = NULL) # the second cross join
# eliminating rows where the points are of the same indexR
df3 <- df3[df3$indexR.x != df3$indexR.y & df3$indexR.x != df3$indexR
& df3$indexR.y != df3$indexR,]
## calculating the total distance
df3$total_distance <- ((df3$x - df3$x.x)^2 + (df3$y- df3$y.x)^2)^.5 +
((df3$x - df3$x.y)^2 + (df3$y- df3$y.y)^2)^.5 +
((df3$x.x - df3$x.y)^2 + (df3$y.x- df3$y.y)^2)^.5
## minimum distance
df3[which.min(df3$total_distance),]
indexR.x x.x y.x id.x indexR.y x.y y.y id.y indexR x y id total_distance
155367 3 441.53 513.37 61 2 591.86 249.57 46 1 638.24 323.76 42 664.3373
以下是有关event.emitters的一些相关信息:
https://nodejs.org/api/events.html#events_class_eventemitter