乐趣区

关于javascript:JavaScript在nodejs中实现sleep休眠函数wait等待的方法

参考文档:
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); 

以上是本人的材料总结。

退出移动版