nodejs专用sleep函数,浏览器环境里面无法使用
发布于 作者:苏南大叔 来源:程序如此灵动~
苏南大叔又来讲述sleep函数了,这次的sleep函数是nodejs专用的,普通的浏览器环境下,是无法执行的。原因嘛,你猜?本文将要阐述两个nodejs的专用sleep()方案。

测试环境:win10,node@12.13.1。
方案一
本方案,单位是毫秒。
function sleep(n) { // 单位毫秒
Atomics.wait(new Int32Array(new SharedArrayBuffer(4)), 0, 0, n);
}
var t1 = new Date();
sleep(1500);
var t2 = new Date();
console.log("t2 - t1 = " + (t2-t1) );
这个方案不用写await和async,也不用写.then。唯一的缺点就是不能运行在浏览器里面,会报错:
VM146:2 Uncaught TypeError: Atomics.wait cannot be called in this context
at Atomics.wait (<anonymous>)
at sleep (<anonymous>:2:11)
at <anonymous>:5:1
方案二
基于c++的sleep方案,因为涉及到一个rebuild的过程,所以,不一定能不能构建成功。慎用!
npm install sleep --save很遗憾,苏南大叔的win10没有构建成功,报错信息是:
TypeError: tar.extract is not a function从官方的页面上可以看到,作者貌似求生欲也不是太强了。

说大家在高版本的node里面,可以用原生的方法了,也就是方案一。好吧。那苏南大叔也不想尝试了。估计mac系统下,可能会构建成功。
一共有三个函数,构建成功的大家,自己试试吧。苏南大叔懒得瞎说了。哈哈~
- 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)
相关链接
- https://www.npmjs.com/package/sleep
- https://github.com/erikdubbelboer/node-sleep
- https://newsn.net/say/js-sleep-settimeout.html
- https://newsn.net/say/php-sleep.html
总结
水文一篇,总结完毕。更多sleep函数,请参考苏南大叔的博客: