@analytics/queue-utils — Dependency free queue processor. One of the small, focused utility packages that power the analytics library, usable standalone.
Full documentation, synced from the package README:
A simple tiny queue library in 354 bytes.
Exposes smartQueue function.
This library will work with analytics or as a standalone import in your code.
Install @analytics/queue-utils from npm.
npm install @analytics/queue-utilsBelow is the api for @analytics/queue-utils. You can import only what you need & the rest will be tree-shaken out of your bundle.
smartQueueCreate a queue that batches items & processes them on an interval. Call smartQueue(handler, options) with a handler that receives the batch of items to process plus the remaining queue. It returns a queue instance with push, flush, resume, pause, & size methods.
Options:
initial - Array of items to seed the queue with. Default [].max - Max number of items to process per batch. Default Infinity.interval - How often, in milliseconds, to process a batch. Default 10000.throttle - When true, overflow past max is not processed immediately, only on the next interval.onEmpty - Callback fired with the queue when it has been fully drained.onPause - Callback fired with the queue when pause is called.import smartQueue from '@analytics/queue-utils'
// Queue options
const options = {
max: 10, // process up to 10 items per batch
interval: 3000, // 3s
throttle: true, // Ensure only max is processed at interval
onPause: (queue) => {
console.log('queue paused', queue)
},
onEmpty: (queue) => {
console.log('queue empty', queue)
}
}
const queue = smartQueue((items, restOfQueue) => {
console.log('items to process', items)
console.log('rest of queue', restOfQueue)
}, options)
;[1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20].forEach((item) => {
// Push items to queue
queue.push(item)
})
// Get queue size
console.log(queue.size())
// Flush & process queued items now
queue.flush()
// Pause queue
queue.pause()
// Resume queue
queue.resume()Fork of saturated