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
函数,请参考苏南大叔的博客:


