共计 3813 个字符,预计需要花费 10 分钟才能阅读完成。
参考文档:
JavaScript 在 nodejs 中实现 sleep 休眠函数 wait 期待的办法:
https://www.bas369.com/more/l…
js 的休眠实现 —sleep():
https://blog.csdn.net/lwh1379…
JS 实现停留几秒 sleep,Js 中 for 循环的阻塞机制,setTimeout 提早执行:
https://blog.csdn.net/wz92555…
1. 办法一:应用异步函数,setTimeout
函数 await
实现代码的休眠暂停;
代码实现:
以下代码来自于互联网,具体出处曾经不记得了;
// 函数实现,参数单位 毫秒;function wait(ms) {return new Promise(resolve = >setTimeout(() = >resolve(), ms));
};
// 调用办法;await wait(5000);
2. 办法二:同步函数,应用 whlie(){}
或者 for
实现死循环;毛病是 cpu
占用率很高;
原理:
执行死循环,阻塞后续程序的执行,进而实现休眠的假象。
2.1. while
代码实现:
// 函数实现,参数 delay 单位 毫秒;function sleep(delay) {var start = (new Date()).getTime();
while ((new Date()).getTime() - start < delay) {
// 应用 continue 实现;continue;
}
}
// 调用办法,同步执行,阻塞后续程序的执行;sleep(5000);
或者
// 函数实现,参数 n 单位 毫秒;function sleep (n) {var start = new Date().getTime() ;
while (true) {if ( new Date().getTime() - start > n) {
// 应用 break 实现;break;
}
}
}
// 调用办法,同步执行,阻塞后续程序的执行;sleep(5000);
2.2. for
代码实现:
// 函数实现,参数 delay 单位 毫秒;function sleep(delay) {for (var t = Date.now(); Date.now() - t <= delay;);
}
// 调用办法,同步执行,阻塞后续程序的执行;sleep(5000);
3. 办法三:在 node.js
平台调用 linux 零碎自带的 sleep 函数;
参考文档:
1.Linux 命令之 sleep – 提早指定工夫:
https://www.linuxidc.com/Linu…
用处阐明:sleep 命令罕用于在 Linux shell 脚本中延迟时间;
罕用形式如下,
留神:以下用法中的参数 <n>
能够为小数;
格局:
sleep <n>;
示例:
sleep <n>s 提早 <n> 秒;
sleep <n>m 提早 <n> 分钟;
sleep <n>h 提早 <n> 小时;
sleep <n>d 提早 <n> 天;
示例一
[root@www.linuxidc.com ~]# date; sleep 5; date
2011 年 04 月 17 日 星期日 19:49:23 CST
2011 年 04 月 17 日 星期日 19:49:28 CST
示例二
[root@www.linuxidc.com ~]# date; sleep 1.5m; date
2011 年 04 月 17 日 星期日 19:50:06 CST
2011 年 04 月 17 日 星期日 19:51:36 CST
2.linux 中 sleep 函数的应用和总结:
https://www.cnblogs.com/wuyep…
3.bash 之 sleep 函数:
https://www.cnblogs.com/xiang…
4.linux sleep 函数:
https://www.cnblogs.com/jkred…
linux 下还有个 delay()
函数,原型为 extern void delay(unsigned int msec);
它能够延时 msec*4
毫秒,
也就是如果想延时一秒钟的话,能够这么用 delay(250)
;
5. 对于 Linux 中 sleep()函数阐明:
https://blog.csdn.net/fly__ch…
6.Linux 下的提早函数 sleep():
https://blog.csdn.net/nigulas…
在 windows
零碎下 sleep(1000)
代表提早 1 秒,因为 sleep
的参数为 毫秒
;
而在 Linux
零碎下 sleep
的参数为 秒
,所以提早 1 秒 为 sleep(1)
。
代码实现:
// 函数实现,参数单位 秒;function wait(second) {
// execSync 属于同步办法;异步形式请依据须要自行查问 node.js 的 child_process 相干办法;let ChildProcess_ExecSync = require('child_process').execSync;
ChildProcess_ExecSync('sleep' + second);
};
// 调用办法;休眠 60 秒,即 1 分钟;wait(60);
4. 办法四:在 node.js
平台调用 shelljs
模块;
参考文档:
https://www.cnblogs.com/cheng…
https://www.cnblogs.com/dashn…
https://blog.csdn.net/weixin_…
https://www.w3cschool.cn/jhnp…
https://blog.51cto.com/138690…
应用办法:
应用 npm
装置 shelljs 模块,援用 shelljs:let shelljs = require('shelljs');
执行命令:shelljs.exec(command,[, options][, callback]);
参数阐明:command
: shell 命令;async
:是否异步执行,默认 false,
如果存在 callback 回调函数,那么默认值为 true;slient
:是否输入信息到 console,默认 false;encoding
:默认 utf8;
代码实现:
// 函数实现,参数单位 秒;function wait(miao) {let shelljs = require('shelljs');
shelljs.exec("sleep" + " " + miao , { async : false} ) ;
};
// 调用办法;休眠 60 秒,即 1 分钟;wait(60);
5. 办法五:在 node.js
平台调用 sleep
模块;
参考文档:
node 如何休眠几秒:
https://segmentfault.com/q/10…
5.1. 其余同类模块;
https://github.com/luciotato/…
https://github.com/jmar777/su…
https://github.com/creationix…
5.2. sleep
模块应用办法;
sleep
模块官网:
https://www.npmjs.com/package…
Linux 平台装置办法:
cd /home/test/ 桌面 /node && sudo npm install sleep --save
cd /var/www/node && sudo npm install sleep --save
Windows 平台装置办法:
参考文档:
装置 node-gyp:https://www.cnblogs.com/wangy…
先在控制台输出:
npm install --global --production windows-build-tools
装置的是:
1、python(v2.7,3.x 不反对);
2、visual C++ Build Tools, 或者(vs2015 以上(蕴含 15))
3、.net framework 4.5.1;
就是装置的这三个货色,安装时间有点长,缓缓等;
而后在控制台输出:
npm install -g node-gyp
只需两部就装置好了,装置实现后查看,控制台输出:
node-gyp list
查看装置是否胜利。
留神点,自己未测试,须要的同学可自行测试:
在 node-gyp 装置前,肯定是有 node.js 的,而且肯定是 32 位的,
如果你电脑是 windows64 位的,并且装置了 64 位的 node.js,那么粗犷的解决办法:间接在官网下载 32 位 node,
而后点击下载文件进行装置,装置的过程中提醒你曾经装置过了,
这时,你抉择替换,一路下一步就能够了。
最初再装置 sleep 模块依赖包:
cd /d C:\Users\%username%\Desktop\server\node && npm install sleep --save
应用办法:
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)
代码实现:
应用办法:// 参数单位为:秒数;function wait(haomiao) {
// 将毫秒参数,转换为 秒数;let miao = haomiao / 1000;
let sleep = require('sleep').sleep;
sleep(miao);
};
// 休眠 60 秒,即 1 分钟;领域上属于同步办法;wait(60000);
以上是本人的材料总结。