Pool works as queue or stack.
Queue-Pool
Is pool of elements, implements major Array methods. With ability to auto-adjust length.
If you handle a group of incoming streams of chunks, process them in a pool, there is a need to release them in stack or queue order.
npm install queue-pool
import QPool from "queue-pool";
const qpool = new QPool(options);
options
init
for custom initialize, instead of empty string as default.maxIn
a number, for max size allowed in pool. Default
is 2.Methods
get
length
elementsSize
an array contains size of each element in the pool.elementsLength
a number of elements in.flush
unshift
push
shift
pop
process
push and adjust the size.
process(input, type, cb)
Default
is queue.In case you made several
push
calls passing the allowed number set inmaxIn
. It autoshift
in case of queue/pop
in case of stack over elements and thenpush
the new one. Using this method you guarantee that you are not passing the number of elements you set.
const qpool = new QPool();
qpool.push("pigs, "); // pigs,
qpool.push("goats, "); // pigs, goats,
qpool.push("sheep."); // pigs, goats, sheep.
qpool.shift(); // goats, sheep.
qpool.pop(); // goats,
qpool.unshift("sheep, "); // sheep, goats,
qpool.elementsLength(); // 2
qpool.elementsSize(); // [7 , 7]
qpool.length(); // 14
const qpool = new QPool({ maxIn: 5 });
for (let i = 0; i < 10; i++) qpool.push(`${i} `);
qpool.get(); // 0 1 2 3 4 5 6 7 8 9
qpool.process("last-element");
qpool.get(); // 6 7 8 9 last-element
const qpool = new QPool({ maxIn: 5 });
for (let i = 0; i < 10; i++) qpool.push(`${i} `);
qpool.get(); // 0 1 2 3 4 5 6 7 8 9
qpool.process("last-element", "stack", (get) => {
console.log(get); // 0, 1, 2, 3 last-element
});
test
This project is licensed under the MIT License