我正在使用NPM软件包chokidar来监视新文件。每当创建新文件或更新现有文件时,我都希望执行函数。问题是,每当创建新文件时,chokidar包就会触发两个事件,即add和change。这使得函数执行了2次。
我试图以两种方式添加侦听器。
方法1
watcher.on('add', handleFileRequest);
watcher.on('change', handleFileRequest);方法2
watcher.on('all', (event, path) => {
console.log(`event: ${event}`);
if (event == 'change' || event == 'add') {
handleFileRequest(path);
}
});上述两段代码片段都调用了handleFileRequest方法2次。
发布于 2022-10-04 14:58:47
我使用全局数组(processing_requests)跟踪运行不同文件的handleFileRequest。然后,在调用handleFileRequest之前,我检查这个函数是否已经为同一个文件运行了。如果它已经在运行,那么我就跳过handleFileRequest的执行。
watcher.on('all', (event, path) => {
if ((event == 'change' || event == 'add') && !processing_requests.includes(path)) {
processing_requests.push(path);
handleFileRequest(path);
setTimeout(function() {
processing_requests = processing_requests.filter(x => x != path);
}, 500);
}
});https://stackoverflow.com/questions/73942775
复制相似问题