/timerjs

Useful timer script written with pure JavaScript. Codes not mine, but someone from Stackoverflow.

Primary LanguageJavaScriptThe UnlicenseUnlicense

PLEASE READ THIS!

This code isn't mine, but someone named Илья Зеленько post this on Stackoverflow and i found it very useful. I hope his code works for whoever need it!

How to use:

let seconds = 0
const timer = new Timer(() => {
    seconds++

    console.log('seconds', seconds)

    if (seconds === 8) {
        timer.clear()

        alert('Game over!')
    }
}, 1000)

timer.pause()
console.log('isPaused: ', timer.paused)

setTimeout(() => {
    timer.resume()
    console.log('isPaused: ', timer.paused)
}, 2500)


function Timer(callback, delay) {
    let callbackStartTime
    let remaining = 0

    this.timerId = null
    this.paused = false

    this.pause = () => {
        this.clear()
        remaining -= Date.now() - callbackStartTime
        this.paused = true
    }
    this.resume = () => {
        window.setTimeout(this.setTimeout.bind(this), remaining)
        this.paused = false
    }
    this.setTimeout = () => {
        this.clear()
        this.timerId = window.setInterval(() => {
            callbackStartTime = Date.now()
            callback()
        }, delay)
    }
    this.clear = () => {
        window.clearInterval(this.timerId)
    }

    this.setTimeout()
}

The code is written quickly and did not refactored, raise the rating of my answer if you want me to improve the code and give ES2015 version (classes).

-- Илья Зеленько