低版本JavaScript如何调用Ubuntu原生sleep二进制实现低资源阻塞等待
解决方案
最优方案:使用Node.js原生child_process.execSync(无第三方依赖,ES5语法兼容)
该方案调用Node.js内置模块,无需安装额外依赖,完全匹配你需要的类os.execute系统级调用效果,等待期间无CPU占用:
// 参数单位为秒,兼容低版本JS标准,无ES6语法 function wait(miao) { var execSync = require('child_process').execSync; execSync('sleep ' + miao, { stdio: 'ignore' }); } // 调用示例:休眠60秒 wait(60);
修复原有shelljs方案
你之前使用shelljs报错仅因为使用了ES6的let关键字,替换为ES5支持的var即可正常运行:
// 修复ES6语法报错后的shelljs实现 function wait(miao) { var shelljs = require('shelljs'); shelljs.exec("sleep " + miao, { async : false }); }
方案说明
- 两种实现均为同步调用Linux原生
sleep二进制文件,属于系统级阻塞暂停,不会运行空循环占用CPU资源,即使8小时长等待也不会导致系统卡顿 - 全程使用ES5标准语法,无
let、箭头函数、async/await等ES6+特性,兼容低版本JS运行环境 - 可直接基于该等待函数实现你的业务触发规则:每日3次间隔8小时执行、7次连胜触发的逻辑,只需在等待前后增加对应业务判断即可
内容的提问来源于stack exchange,提问作者Tommy Lessiohadi
相关产品推荐
相关产品推荐

