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.
		
		
		
		
		
			
		
			
				
					59 lines
				
				1.7 KiB
			
		
		
			
		
	
	
					59 lines
				
				1.7 KiB
			| 
											3 years ago
										 | <h1 align="center">Welcome to atomic-sleep ⏱️</h1> | ||
|  | <p> | ||
|  |   <img alt="Version" src="https://img.shields.io/badge/version-1.0.0-blue.svg?cacheSeconds=2592000" /> | ||
|  |   <a href="#" target="_blank"> | ||
|  |     <img alt="License: MIT" src="https://img.shields.io/badge/License-MIT-yellow.svg" /> | ||
|  |   </a> | ||
|  |   <a href="https://twitter.com/davidmarkclem" target="_blank"> | ||
|  |     <img alt="Twitter: davidmarkclem" src="https://img.shields.io/twitter/follow/davidmarkclem.svg?style=social" /> | ||
|  |   </a> | ||
|  | </p> | ||
|  | 
 | ||
|  | > Zero CPU overhead, zero dependency, true event-loop blocking sleep
 | ||
|  | 
 | ||
|  | ## Usage
 | ||
|  | 
 | ||
|  | ```js | ||
|  | const sleep = require('atomic-sleep') | ||
|  | 
 | ||
|  | console.time('sleep') | ||
|  | setTimeout(() => { console.timeEnd('sleep') }, 100)  | ||
|  | sleep(1000) | ||
|  | ``` | ||
|  | 
 | ||
|  | The `console.time` will report a time of just over 1000ms despite the `setTimeout` | ||
|  | being 100ms. This is because the event loop is paused for 1000ms and the setTimeout | ||
|  | fires immediately after the event loop is no longer blocked (as more than 100ms have passed). | ||
|  | 
 | ||
|  | ## Install
 | ||
|  | 
 | ||
|  | ```sh | ||
|  | npm install | ||
|  | ``` | ||
|  | 
 | ||
|  | ## Run tests
 | ||
|  | 
 | ||
|  | ```sh | ||
|  | npm test | ||
|  | ``` | ||
|  | 
 | ||
|  | ## Support
 | ||
|  | 
 | ||
|  | Node and Browser versions that support both `SharedArrayBuffer` and `Atomics` will have (virtually) zero CPU overhead sleep.  | ||
|  | 
 | ||
|  | For Node, Atomic Sleep can provide zero CPU overhead sleep from Node 8 and up. | ||
|  | 
 | ||
|  | For browser support see https://caniuse.com/#feat=sharedarraybuffer and https://caniuse.com/#feat=mdn-javascript_builtins_atomics. | ||
|  | 
 | ||
|  | 
 | ||
|  | For older Node versions and olders browsers we fall back to blocking the event loop in a way that will cause a CPU spike.  | ||
|  | 
 | ||
|  | 
 | ||
|  | 
 | ||
|  | ## Author
 | ||
|  | 
 | ||
|  | 👤 **David Mark Clements (@davidmarkclem)** | ||
|  | 
 | ||
|  | * Twitter: [@davidmarkclem](https://twitter.com/davidmarkclem) | ||
|  | * Github: [@davidmarkclements](https://github.com/davidmarkclements) |