kicks-counter v0.9.1
DEPRECATED
THIS MODULE HAS BEEN SUPERCEDED BY THE KICKTOCK MODULE.
Track the progress of sets of callbacks or Promises.
npm install --save kicks-counterFor Callbacks
To track the progress of a callback, create a counter:
const counter = require('kicks-counter')
var count = counter()Then, for every callback you initiate, call todo before the callback -
and done at the conclusion of the callback.
files.forEach(path => {
count.todo()
fs.readFile(path, (err, data) => {
// Do things here
count.done()
})
})You can also provide todo with a complete count before initiating the
callbacks:
count.todo(files.length)
files.forEach(path => {
fs.readFile(path, (err, data) => {
// Do things here
count.done()
})
})When the progress is complete, an 'end' event will be sent. Be sure to set up this event and start the counter.
count.on('end', () => {
console.log('DONE')
})
count.start()You can also track progress with the 'progress' event.
count.on('progress', () => {
console.log(`Completed ${count.at} of ${count.total} tasks.`)
})By default, the progress function will fire for every item. You can also use a timer if you supply a microsecond count when you create the counter.
// Progress events will occur once per second
var count = counter(1000)For Promises
Similarly, setup the counter.
const counter = require('kicks-counter')
var count = counter()Now add each promise to the counter.
count.todo(Promise.resolve(3))
count.todo(new Promise((resolve, reject) => {
setTimeout(resolve, 3000, 'foo')
})And add the events and 'start' call.
count.on('end', () => {
console.log('DONE')
count.start()Passing the End Event to Start()
You can also just supply an 'end' callback right to the start() method:
count.start(() => {
console.log('DONE')
})That's it! Enjoy.