49 lines
1.9 KiB
Markdown
49 lines
1.9 KiB
Markdown
[](https://travis-ci.org/erikdubbelboer/node-sleep)
|
|
[](https://ci.appveyor.com/project/erikdubbelboer/node-sleep)
|
|
[](https://app.fossa.io/projects/git%2Bgithub.com%2Ferikdubbelboer%2Fnode-sleep?ref=badge_shield)
|
|
|
|
sleep
|
|
=====
|
|
|
|
Add [`sleep()`][1], `msleep()` and [`usleep()`][2] to Node.js, via a C++ binding.
|
|
|
|
This is mainly useful for debugging.
|
|
|
|
Note that because this is a C++ module, it will need to be built on the system you are going to use it on.
|
|
|
|
These calls will block execution of all JavaScript by halting Node.js' event loop!
|
|
==================================================================================
|
|
|
|
Alternative
|
|
-----------
|
|
|
|
When using nodejs `9.3` or higher it's better to use [Atomics.wait](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Atomics/wait) which doesn't require compiling this C++
|
|
module.
|
|
The `sleep` and `msleep` functions can be implemented like this:
|
|
```js
|
|
function msleep(n) {
|
|
Atomics.wait(new Int32Array(new SharedArrayBuffer(4)), 0, 0, n);
|
|
}
|
|
function sleep(n) {
|
|
msleep(n*1000);
|
|
}
|
|
```
|
|
If you require `usleep` this module is still required.
|
|
|
|
Usage
|
|
-----
|
|
|
|
var sleep = require('sleep');
|
|
|
|
* `sleep.sleep(n)`: sleep for `n` seconds
|
|
* `sleep.msleep(n)`: sleep for `n` miliseconds
|
|
* `sleep.usleep(n)`: sleep for `n` microseconds (1 second is 1000000 microseconds)
|
|
|
|
|
|
[1]: http://linux.die.net/man/3/sleep
|
|
[2]: http://linux.die.net/man/3/usleep
|
|
|
|
|
|
## License
|
|
[](https://app.fossa.io/projects/git%2Bgithub.com%2Ferikdubbelboer%2Fnode-sleep?ref=badge_large)
|