使用chokidar加载文件

时间:2017-08-15 17:53:46

标签: javascript node.js events meteor

所以我一直在尝试使用 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)
}

1 个答案:

答案 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