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...html

1. 方法一:使用異步函數,setTimeout 函數 await 實現代碼的休眠暫停;

代碼實現:
如下代碼來自於互聯網,具體出處已經不記得了;node

// 函數實現,參數單位 毫秒 ;
function wait(ms) {
    return new Promise(resolve = >setTimeout(() = >resolve(), ms));
};

// 調用方法;
await wait(5000);

2. 方法二:同步函數,使用 whlie(){} 或者 for 實現死循環;缺點是 cpu 佔用率很高;

原理:
執行死循環,阻塞後續程序的執行,進而實現休眠的假象。python

2.1. while 代碼實現:

// 函數實現,參數 delay 單位 毫秒 ;
function sleep(delay) {
    var start = (new Date()).getTime();
    while ((new Date()).getTime() - start < delay) {
        // 使用  continue 實現;
        continue; 
    }
}

// 調用方法,同步執行,阻塞後續程序的執行;
sleep(5000);

或者linux

// 函數實現,參數 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 CSTgit

2.linux中sleep函數的使用和總結:
https://www.cnblogs.com/wuyep...github

3.bash之sleep函數:
https://www.cnblogs.com/xiang...shell

4.linux sleep函數:
https://www.cnblogs.com/jkred...
linux下還有個 delay() 函數,原型爲 extern void delay(unsigned int msec);
它能夠延時 msec*4 毫秒,
也就是若是想延時一秒鐘的話,能夠這麼用 delay(250) ;npm

5.關於Linux 中sleep()函數說明:
https://blog.csdn.net/fly__ch...segmentfault

6.Linux下的延遲函數sleep():
https://blog.csdn.net/nigulas...
windows 系統下 sleep(1000) 表明延遲 1 秒,由於 sleep 的參數爲 毫秒
而在 Linux 系統下 sleep 的參數爲 ,因此延遲 1 秒 爲 sleep(1)windows

代碼實現:

// 函數實現,參數單位 秒 ;
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

安裝的是:
一、python(v2.7 ,3.x不支持);
二、visual C++ Build Tools,或者 (vs2015以上(包含15))
三、.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);

以上是本身的資料總結。

相關文章
相關標籤/搜索