一些概念性的问题
我有 15 个(例如)文件需要处理。但我不想一次处理一个。相反,我想开始处理其中的 5 个(顺序不重要的任何 5 个),只要这 5 个文件中的一个被处理,另一个文件就可以开始。这个想法是同时处理最多 5 个文件,直到处理完所有文件。
试图在 Node 中解决这个问题,但总的来说我不知道如何实现它
最佳答案
此类处理的更准确名称可能是“有限并行执行”。 Mario Casciaro 在他的书 Node.js 设计模式(从第 77 页开始)中对此进行了很好的介绍。此模式的一个用例是当您想要控制一组可能导致过载的并行任务时。下面的例子来自他的书。
有限并行执行模式
function TaskQueue(concurrency) {
this.concurrency = concurrency;
this.running = 0;
this.queue = [];
}
TaskQueue.prototype.pushTask = function(task, callback) {
this.queue.push(task);
this.next();
}
TaskQueue.prototype.next = function() {
var self = this;
while(self.running < self.concurrency && self.queue.length) {
var task = self.queue.shift();
task(function(err) {
self.running--;
self.next();
});
self.running++;
}
}
关于node.js - Node.js批处理,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39564675/