Skip to content
Open
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
25 changes: 18 additions & 7 deletions index.js
Original file line number Diff line number Diff line change
Expand Up @@ -3,16 +3,20 @@
*/

try {
var date = require('date');
} catch(e) {
var date = require('date.js');
var date = require("date");
} catch (e) {
var date = require("date.js");
}

/**
* Expose `every`
*/

module.exports = every;
module.exports.clear = clear;

var timers = {};
var id = 0;

/**
* Initialize `every`
Expand All @@ -23,7 +27,7 @@ module.exports = every;
*/

function every(str, fn) {
var now = new Date;
var now = new Date();
var d = date(str);
var offset = d - now;
var until = offset;
Expand All @@ -32,7 +36,8 @@ function every(str, fn) {
throw new Error('did not recognize "' + str + '"');
}

setTimeout(run, until);
let timerId = id++;
timers[timerId] = setTimeout(run, until);

function run() {
d = date(str);
Expand All @@ -46,14 +51,20 @@ function every(str, fn) {

function reset() {
if (!offset) return;
now = new Date;
now = new Date();
until = d - now;

// if we're already past the time, reset immediately
if (until < 0) {
run();
} else {
setTimeout(run, until);
timers[timerId] = setTimeout(run, until);
}
}
return timerId;
}

function clear(id) {
clearTimeout(timers[id]);
delete timers[id];
}