From 4bd0a90631cc07d1433a11079bfc2d54d51fb644 Mon Sep 17 00:00:00 2001 From: Holden Rohrer Date: Tue, 24 Dec 2019 20:55:52 -0500 Subject: added queue.js to simplify jarvis --- tools/queue.js | 24 ++++++++++++++++++++++++ 1 file changed, 24 insertions(+) create mode 100644 tools/queue.js (limited to 'tools') diff --git a/tools/queue.js b/tools/queue.js new file mode 100644 index 0000000..ebe17cd --- /dev/null +++ b/tools/queue.js @@ -0,0 +1,24 @@ +// A generalized queue object for rapid responses (doesn't do prioritization or algorithmic timesharing) + +module.exports = function(delayms, maxExport, call){ + let queue = []; + let open = true; + let getObjs = (maxExport == 1) ? + () => queue.shift() : + () => queue.splice(0, maxExport) ; + this.enqueue = function(){ + for (let i = 0; i < arguments.length; i++) + queue.push(arguments[i]); + if (open) dequeue(); + } + + function dequeue(){ + if (queue.length == 0) + open = true; + else { + open = false; + call(getObjs()); + setTimeout(dequeue, delayms); + } + } +} -- cgit