You can not select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
		
			
		
			
				
					
					
						
							39 lines
						
					
					
						
							1.2 KiB
						
					
					
				
			
		
		
	
	
							39 lines
						
					
					
						
							1.2 KiB
						
					
					
				'use strict'
 | 
						|
 | 
						|
/* global SharedArrayBuffer, Atomics */
 | 
						|
 | 
						|
if (typeof SharedArrayBuffer !== 'undefined' && typeof Atomics !== 'undefined') {
 | 
						|
  const nil = new Int32Array(new SharedArrayBuffer(4))
 | 
						|
 | 
						|
  function sleep (ms) {
 | 
						|
    // also filters out NaN, non-number types, including empty strings, but allows bigints
 | 
						|
    const valid = ms > 0 && ms < Infinity 
 | 
						|
    if (valid === false) {
 | 
						|
      if (typeof ms !== 'number' && typeof ms !== 'bigint') {
 | 
						|
        throw TypeError('sleep: ms must be a number')
 | 
						|
      }
 | 
						|
      throw RangeError('sleep: ms must be a number that is greater than 0 but less than Infinity')
 | 
						|
    }
 | 
						|
 | 
						|
    Atomics.wait(nil, 0, 0, Number(ms))
 | 
						|
  }
 | 
						|
  module.exports = sleep
 | 
						|
} else {
 | 
						|
 | 
						|
  function sleep (ms) {
 | 
						|
    // also filters out NaN, non-number types, including empty strings, but allows bigints
 | 
						|
    const valid = ms > 0 && ms < Infinity 
 | 
						|
    if (valid === false) {
 | 
						|
      if (typeof ms !== 'number' && typeof ms !== 'bigint') {
 | 
						|
        throw TypeError('sleep: ms must be a number')
 | 
						|
      }
 | 
						|
      throw RangeError('sleep: ms must be a number that is greater than 0 but less than Infinity')
 | 
						|
    }
 | 
						|
    const target = Date.now() + Number(ms)
 | 
						|
    while (target > Date.now()){}
 | 
						|
  }
 | 
						|
 | 
						|
  module.exports = sleep
 | 
						|
 | 
						|
}
 |