This commit is contained in:
Tutur33
2023-11-24 22:35:41 +01:00
parent 3c0b507a93
commit 7644b2a0f7
45165 changed files with 4803356 additions and 3 deletions
@@ -0,0 +1,34 @@
"use strict";
/**
* Takes in a processor function, and returns a writer function.
*
* @param {Function} processor
*
* @return {Function} queuedWriter
*/
module.exports = function createQueuedWriter(processor) {
var queue = [];
var iterator = function iterator(callback) {
return function (err) {
queue.shift();
callback(err);
var next = queue[0];
if (next) {
processor(next.fs, next.data, iterator(next.callback));
}
};
};
return function queuedWriter(fs, data, callback) {
var empty = !queue.length;
queue.push({ fs: fs, data: data, callback: callback });
if (empty) {
// start processing
processor(fs, data, iterator(callback));
}
};
};