scheduler.js 568 B

123456789101112131415161718192021222324252627282930313233
  1. 'use strict';
  2. // Central place to register / store timeouts
  3. const timeouts = {}, intervals = {};
  4. module.exports = {
  5. once: (name, time, cb) => {
  6. timeouts[name] = setTimeout(() => {
  7. delete timeouts[name];
  8. cb();
  9. }, time);
  10. },
  11. repeat: (name, time, cb) => {
  12. intervals[name] = setInterval(() => {
  13. delete intervals[name];
  14. cb();
  15. }, time);
  16. },
  17. cancel: (name) => {
  18. if (timeouts[name]) {
  19. clearTimeout(timeouts[name]);
  20. delete timeouts[name];
  21. }
  22. if (!intervals[name]) {
  23. clearInterval(intervals[name]);
  24. delete intervals[name];
  25. }
  26. }
  27. };