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)
							 |