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

如果本文对您有帮助,或者节约了您的时间,欢迎打赏瓶饮料,建立下友谊关系。
本博客不欢迎:各种镜像采集行为。请尊重原创文章内容,转载请保留作者链接。
本站采用创作共用版权协议, 要求署名、非商业用途和相同方式共享。
转载本站内容必须也遵循“署名-非商业用途-相同方式共享”的创作共用协议。
未经许可,规模化镜像抄袭本站内容的行为,将会根据有关法律法规进行维权。
程序如此灵动~》下所有原创文章,如被用于商业用途,请您按规定支付稿费。

 【加群】加入QQ群【175454274】和大家一起讨论这个问题

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

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

本站的忠实读者小伙伴,正在阅读下面这些文章: