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
			| 
											3 years ago
										 | '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 | ||
|  | 
 | ||
|  | } |