mirror of
				https://github.com/advplyr/audiobookshelf.git
				synced 2025-11-03 19:07:00 -05:00 
			
		
		
		
	
		
			
				
	
	
		
			37 lines
		
	
	
		
			658 B
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
			
		
		
	
	
			37 lines
		
	
	
		
			658 B
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
/**
 | 
						|
 * Handle timeouts greater than 32-bit signed integer
 | 
						|
 */
 | 
						|
class LongTimeout {
 | 
						|
  constructor() {
 | 
						|
    this.timeout = 0
 | 
						|
    this.timer = null
 | 
						|
  }
 | 
						|
 | 
						|
  clear() {
 | 
						|
    clearTimeout(this.timer)
 | 
						|
  }
 | 
						|
 | 
						|
  /**
 | 
						|
   *
 | 
						|
   * @param {Function} fn
 | 
						|
   * @param {number} timeout
 | 
						|
   */
 | 
						|
  set(fn, timeout) {
 | 
						|
    const maxValue = 2147483647
 | 
						|
 | 
						|
    const handleTimeout = () => {
 | 
						|
      if (this.timeout > 0) {
 | 
						|
        let delay = Math.min(this.timeout, maxValue)
 | 
						|
        this.timeout = this.timeout - delay
 | 
						|
        this.timer = setTimeout(handleTimeout, delay)
 | 
						|
        return
 | 
						|
      }
 | 
						|
      fn()
 | 
						|
    }
 | 
						|
 | 
						|
    this.timeout = timeout
 | 
						|
    handleTimeout()
 | 
						|
  }
 | 
						|
}
 | 
						|
module.exports = LongTimeout
 |