Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- function Timer(callback, delay) {
- var timerId, start, remaining = delay;
- this.pause = function() {
- window.clearTimeout(timerId);
- remaining -= Date.now() - start;
- };
- this.resume = function() {
- start = Date.now();
- window.clearTimeout(timerId);
- timerId = window.setTimeout(callback, remaining);
- };
- this.resume();
- }
- var timer = new Timer(function() {
- alert("Done!");
- }, 1000);
- timer.pause();
- // Do some stuff...
- timer.resume();
- function Timer(fn, countdown) {
- var ident, complete = false;
- function _time_diff(date1, date2) {
- return date2 ? date2 - date1 : new Date().getTime() - date1;
- }
- function cancel() {
- clearTimeout(ident);
- }
- function pause() {
- clearTimeout(ident);
- total_time_run = _time_diff(start_time);
- complete = total_time_run >= countdown;
- }
- function resume() {
- ident = complete ? -1 : setTimeout(fn, countdown - total_time_run);
- }
- var start_time = new Date().getTime();
- ident = setTimeout(fn, countdown);
- return { cancel: cancel, pause: pause, resume: resume };
- }
- function Timer(callback, delay) {
- var args = arguments,
- self = this,
- timer, start;
- this.clear = function () {
- clearTimeout(timer);
- };
- this.pause = function () {
- this.clear();
- delay -= new Date() - start;
- };
- this.resume = function () {
- start = new Date();
- timer = setTimeout(function () {
- callback.apply(self, Array.prototype.slice.call(args, 2, args.length));
- }, delay);
- };
- this.resume();
- }
- function callback(foo, bar) {
- console.log(foo); // "foo"
- console.log(bar); // "bar"
- }
- var timer = new Timer(callback, 1000, "foo", "bar");
- timer.pause();
- document.onclick = timer.resume;
- // Setting
- var t = setInterval(doSomething, 1000);
- // Pausing (which is really stopping)
- clearInterval(t);
- t = 0;
- // Resuming (which is really just setting again)
- t = setInterval(doSomething, 1000);
- var pt_hey = new PauseableTimeout(function(){
- alert("hello");
- }, 2000);
- window.setTimeout(function(){
- pt_hey.pause();
- }, 1000);
- window.setTimeout("pt_hey.start()", 2000);
- var pi_hey = new PauseableInterval(function(){
- console.log("hello world");
- }, 2000);
- window.setTimeout("pi_hey.pause()", 5000);
- window.setTimeout("pi_hey.resume()", 6000);
- 'use strict';
- //Constructor
- var Timer = function(cb, delay) {
- this.cb = cb;
- this.delay = delay;
- this.elapsed = 0;
- this.remaining = this.delay - self.elapsed;
- };
- console.log(Timer);
- Timer.prototype = function() {
- var _start = function(x, y) {
- var self = this;
- if (self.elapsed < self.delay) {
- clearInterval(self.interval);
- self.interval = setInterval(function() {
- self.elapsed += 50;
- self.remaining = self.delay - self.elapsed;
- console.log('elapsed: ' + self.elapsed,
- 'remaining: ' + self.remaining,
- 'delay: ' + self.delay);
- if (self.elapsed >= self.delay) {
- clearInterval(self.interval);
- self.cb();
- }
- }, 50);
- }
- },
- _pause = function() {
- var self = this;
- clearInterval(self.interval);
- },
- _restart = function() {
- var self = this;
- self.elapsed = 0;
- console.log(self);
- clearInterval(self.interval);
- self.start();
- };
- //public member definitions
- return {
- start: _start,
- pause: _pause,
- restart: _restart
- };
- }();
- // - - - - - - - - how to use this class
- var restartBtn = document.getElementById('restart');
- var pauseBtn = document.getElementById('pause');
- var startBtn = document.getElementById('start');
- var timer = new Timer(function() {
- console.log('Done!');
- }, 2000);
- restartBtn.addEventListener('click', function(e) {
- timer.restart();
- });
- pauseBtn.addEventListener('click', function(e) {
- timer.pause();
- });
- startBtn.addEventListener('click', function(e) {
- timer.start();
- });
- <button onclick="myBool = true" > pauseTimeout </button>
- <script>
- var myBool = false;
- var t = setTimeout(function() {if (!mybool) {dosomething()}}, 5000);
- </script>
- var Slideshow = {
- _create: function(){
- this.timer = window.setInterval(function(){
- $(window).trigger('timer:tick'); }, 8000);
- },
- play: function(){
- $(window).bind('timer:tick', function(){
- // stuff
- });
- },
- pause: function(){
- $(window).unbind('timer:tick');
- }
- };
- function Timer( callback, delay ) {
- /** Get access to this object by value **/
- var self = this;
- /********************* PROPERTIES *********************/
- this.delay = delay;
- this.callback = callback;
- this.starttime;// = ;
- this.timerID = null;
- /********************* METHODS *********************/
- /**
- * Pause
- */
- this.pause = function() {
- /** If the timer has already been paused, return **/
- if ( self.timerID == null ) {
- console.log( 'Timer has been paused already.' );
- return;
- }
- /** Pause the timer **/
- window.clearTimeout( self.timerID );
- self.timerID = null; // this is how we keep track of the timer having beem cleared
- /** Calculate the new delay for when we'll resume **/
- self.delay = self.starttime + self.delay - new Date().getTime();
- console.log( 'Paused the timer. Time left:', self.delay );
- }
- /**
- * Resume
- */
- this.resume = function() {
- self.starttime = new Date().getTime();
- self.timerID = window.setTimeout( self.callback, self.delay );
- console.log( 'Resuming the timer. Time left:', self.delay );
- }
- /********************* CONSTRUCTOR METHOD *********************/
- /**
- * Private constructor
- * Not a language construct.
- * Mind var to keep the function private and () to execute it right away.
- */
- var __construct = function() {
- self.starttime = new Date().getTime();
- self.timerID = window.setTimeout( self.callback, self.delay )
- }(); /* END __construct */
- } /* END Timer */
- var timer = new Timer( function(){ console.log( 'hey! this is a timer!' ); }, 10000 );
- timer.pause();
- <div id="div1">1</div><div id="div2">2</div>
- <div id="div3">3</div><div id="div4">4</div>
- <script>
- function hideDiv(elm){
- var interval,
- unit = 1000,
- cycle = 5,
- hide = function(){
- interval = setInterval(function(){
- if(--cycle === 0){
- elm.style.display = 'none';
- clearInterval(interval);
- }
- elm.setAttribute('data-cycle', cycle);
- elm.innerHTML += '*';
- }, unit);
- };
- elm.onmouseover = function(){
- clearInterval(interval);
- };
- elm.onmouseout = function(){
- hide();
- };
- hide();
- }
- function hideDivs(ids){
- var id;
- while(id = ids.pop()){
- hideDiv(document.getElementById(id));
- }
- }
- hideDivs(['div1','div2','div3','div4']);
- </script>
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement