我们相信:世界是美好的,你是我也是。平行空间的世界里面,不同版本的生活也在继续...

苏南大叔又来讲述sleep函数了,这次的sleep函数是nodejs专用的,普通的浏览器环境下,是无法执行的。原因嘛,你猜?本文将要阐述两个nodejs的专用sleep()方案。

苏南大叔:nodejs专用sleep函数,浏览器环境里面无法使用 - node-sleep
nodejs专用sleep函数,浏览器环境里面无法使用(图4-1)

测试环境:win10node@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) );

苏南大叔:nodejs专用sleep函数,浏览器环境里面无法使用 - node-sleep-ok
nodejs专用sleep函数,浏览器环境里面无法使用(图4-2)

这个方案不用写awaitasync,也不用写.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

苏南大叔:nodejs专用sleep函数,浏览器环境里面无法使用 - node-sleep-error
nodejs专用sleep函数,浏览器环境里面无法使用(图4-3)

方案二

基于c++sleep方案,因为涉及到一个rebuild的过程,所以,不一定能不能构建成功。慎用!

npm install sleep --save

很遗憾,苏南大叔的win10没有构建成功,报错信息是:

TypeError: tar.extract is not a function

从官方的页面上可以看到,作者貌似求生欲也不是太强了。

苏南大叔:nodejs专用sleep函数,浏览器环境里面无法使用 - node-sleep-error2
nodejs专用sleep函数,浏览器环境里面无法使用(图4-4)

说大家在高版本的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)

相关链接

总结

水文一篇,总结完毕。更多sleep函数,请参考苏南大叔的博客:

如果本文对您有帮助,或者节约了您的时间,欢迎打赏瓶饮料,建立下友谊关系。
本博客不欢迎:各种镜像采集行为。请尊重原创文章内容,转载请保留作者链接。

 【福利】 腾讯云最新爆款活动!1核2G云服务器首年50元!

 【源码】本文代码片段及相关软件,请点此获取更多信息

 【绝密】秘籍文章入口,仅传授于有缘之人   node    sleep