UNPKG

hyperdht

Version:
36 lines (31 loc) 693 B
module.exports = class Sleeper { constructor () { this._timeout = null this._resolve = null this._start = (resolve) => { this._resolve = resolve } this._trigger = () => { if (this._resolve === null) return const resolve = this._resolve this._timeout = null this._resolve = null resolve() } } pause (ms) { const p = new Promise(this._start) if (this._timeout !== null) { clearTimeout(this._timeout) this._trigger() } this._timeout = setTimeout(this._trigger, ms) return p } resume () { if (this._timeout !== null) { clearTimeout(this._timeout) this._trigger() } } }