At one point or another you want to stuff in your code to happen at intervals. The requirements usually vary - it could be at fixed points in time, once every day, a fixed number of times, a regular interval between starts, a regular intervals between the last finish and the next start etc. Also - you could want logic statements to determine when to start or stop your schedules.
You could do all this with setTimeout and setInterval, but you could also do it with the npm module Zeit that abstracts all of the goriness away.
Super easy use case:
const zeit = require('zeit');
new zeit.Scheduler(new zeit.DateClock())
.execute(myPromise)
.atFixedIntervalOf(10000)
.exactly(10)
.start();
This runs myPromise
every 10 seconds and stops after 10 times.
Variation:
const zeit = require('zeit');
new zeit.Scheduler(new zeit.DateClock())
.after(3000)
.execute(myPromise)
.andRepeatAfter(10000)
.until((err, result) => {
return result === 'finished;
})
.start();
This waits for 3 seconds (after(3000)
) then runs myPromise
, and 10 seconds after myPromise resolves it runs myPromise again, until the return value of myPromise is 'finished'
- then it stops the schedule.
The difference between atFixedIntervalOf
and andRepeatAfter
is that first does not wait for myPromise to resolve.