From 278ac134faa2909f5988df2ab092523436e59dde Mon Sep 17 00:00:00 2001 From: Mahdi Farzadi Date: Wed, 16 Dec 2020 12:08:16 +0330 Subject: [PATCH 1/2] every return an id --- index.js | 20 +++++++++++++------- 1 file changed, 13 insertions(+), 7 deletions(-) diff --git a/index.js b/index.js index 290cbd0..db8accb 100644 --- a/index.js +++ b/index.js @@ -3,9 +3,9 @@ */ try { - var date = require('date'); -} catch(e) { - var date = require('date.js'); + var date = require("date"); +} catch (e) { + var date = require("date.js"); } /** @@ -13,6 +13,7 @@ try { */ module.exports = every; +module.exports.clear = clear; /** * Initialize `every` @@ -22,8 +23,11 @@ module.exports = every; * @api public */ +var timers = {}; +var id = 0; + function every(str, fn) { - var now = new Date; + var now = new Date(); var d = date(str); var offset = d - now; var until = offset; @@ -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); @@ -46,14 +51,15 @@ 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; } From 081e5a15b75b377a2e4794b907cee6122c210ad3 Mon Sep 17 00:00:00 2001 From: Mahdi Farzadi Date: Wed, 16 Dec 2020 12:19:08 +0330 Subject: [PATCH 2/2] every.clear(id) implemented --- index.js | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/index.js b/index.js index db8accb..f78f468 100644 --- a/index.js +++ b/index.js @@ -15,6 +15,9 @@ try { module.exports = every; module.exports.clear = clear; +var timers = {}; +var id = 0; + /** * Initialize `every` * @@ -23,9 +26,6 @@ module.exports.clear = clear; * @api public */ -var timers = {}; -var id = 0; - function every(str, fn) { var now = new Date(); var d = date(str); @@ -63,3 +63,8 @@ function every(str, fn) { } return timerId; } + +function clear(id) { + clearTimeout(timers[id]); + delete timers[id]; +}