Javascript 限制使用nodejs监视的文件数
我有一个用Javascript 限制使用nodejs监视的文件数,javascript,node.js,Javascript,Node.js,我有一个用nodejs和chokidar编写的脚本,当添加文件时,我会在其中监听文件夹 添加文件后,启动具有多个循环的函数 有时系统会同时添加100个或更多文件,因此事件add会被调用100次,服务器可能会崩溃 有没有办法限制被监视的文件,而其他文件则等待被监视的文件关闭 例如,我决定不能同时观看超过10个文件,其他文件要等到前10个文件完成它们的工作 有可能吗 这是我的剧本: var chokidar = require('chokidar'); var sys = require('sys'
nodejs
和chokidar
编写的脚本,当添加文件时,我会在其中监听文件夹
添加文件后,启动具有多个循环的函数
有时系统会同时添加100个或更多文件,因此事件add
会被调用100次,服务器可能会崩溃
有没有办法限制被监视的文件,而其他文件则等待被监视的文件关闭
例如,我决定不能同时观看超过10个文件,其他文件要等到前10个文件完成它们的工作
有可能吗
这是我的剧本:
var chokidar = require('chokidar');
var sys = require('sys')
var exec = require('child_process').exec;
var folder = process.argv[2];
var watcher = chokidar.watch('tmp/xml/' + folder + '/', {ignored: /^\./, persistent: true});
watcher
.on('add', function(path) {
var filenameArr = path.split('/');
filename = folder + '/' + filenameArr[filenameArr.length - 1];
function puts(error, stdout, stderr) { sys.puts(stdout) }
exec('bin/cake manager readXmlAndSave ' + filename, puts);
})
就我的文化而言,我希望看到一个纯粹的vanillaJS答案,例如使用流和背压当然有可能,调用
add
时,您的代码决定要做什么。好吧,那么我如何在nodejs中将使用exec调用的同时函数的最大数量限制为10个?只需将它们添加到队列中,并使用所需的并行操作量处理队列。当服务器崩溃时,您会收到哪条错误消息?服务器崩溃并且处于脱机状态@MehdiElFadil
const chokidar = require('chokidar');
const async = require("async");
[...]
let taskQueue;
const watcher = chokidar.watch('myPath');
watcher
.on('add', function(path) {
taskQueue.push({path});
})
// handle files 10 per 10 to avoid to exhaust critical resources
taskQueue = async.queue(async function(task) {
await myAsyncHandler(task.path);
}, 10);
taskQueue.error(function(err, task) {
handleError(err, task);
});