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);
});