首页 » SEO优化 » phpsleep3000技巧_javascript中怎么实现sleep函数

phpsleep3000技巧_javascript中怎么实现sleep函数

访客 2024-12-18 0

扫一扫用手机浏览

文章目录 [+]

console.log('1', new Date())sleep(2000)console.log('1', new Date())

当然这个实际是没法实行的,由于JavaScript中没有sleep函数。
下面我们来几个方法实现之。

利用setTimeout嵌套实现

console.time('runTime:');setTimeout(function () { console.log('1', new Date()) setTimeout(function () { console.log('2', new Date()); setTimeout(function () { console.log('3', new Date()); console.timeEnd('runTime:'); }, 2000); }, 3000);}, 2000);// 输出如下:// 1 2022-09-18T01:25:48.317Z// 2 2022-09-18T01:25:51.333Z// 3 2022-09-18T01:25:53.341Z// runTime:: 7.038s

这段代码是不是看的很晕,嵌套的太麻烦了

phpsleep3000技巧_javascript中怎么实现sleep函数

利用去世循环

function sleep(time) { var timeStamp = new Date().getTime(); var endTime = timeStamp + time; while (true) { if (new Date().getTime() > endTime) { return; } }}console.time('runTime:');sleep(2000);console.log('1', new Date());sleep(3000);console.log('2', new Date());sleep(2000);console.log('3', new Date());console.timeEnd('runTime:');// 输出如下// 1 2022-09-18T01:29:19.529Z// 2 2022-09-18T01:29:22.534Z// 3 2022-09-18T01:29:24.536Z// runTime:: 7.008s

这个方法由于有短期无限去世循环,会让全体程序假去世,页面也会假去世,不具备实用代价

phpsleep3000技巧_javascript中怎么实现sleep函数
(图片来自网络侵删)
基于Promise

function sleep(time) { return new Promise(function (resolve) { setTimeout(resolve, time); });}console.time('runTime:');console.log('1', new Date());sleep(1000).then(function () { console.log('2', new Date()); sleep(2000).then(function () { console.log('3', new Date()); console.timeEnd('runTime:'); });});console.log('a', new Date());// 输出如下:// 1 2022-09-18T01:32:40.420Z// a 2022-09-18T01:32:40.425Z// 2 2022-09-18T01:32:41.439Z// 3 2022-09-18T01:32:43.45基于async, promise 的sleep

// 还是这个看起来最简洁好用function sleep(time) { return new Promise((resolve) => setTimeout(resolve, time));}async function run() { console.time('runTime:'); console.log('1', new Date()); await sleep(2000); console.log('2', new Date()); await sleep(1000); console.log('3', new Date()); console.timeEnd('runTime:');}run();console.log('a', new Date());// 输出如下:// 1 2022-09-18T01:35:17.775Z// a 2022-09-18T01:35:17.779Z// 2 2022-09-18T01:35:19.790Z// 3 2022-09-18T01:35:20.802Z// runTime:: 3.027s使⽤child_process(⼦进程)实现sleep函数

var childProcess = require('child_process');var nodeBin = process.argv[0];function sleep(time) {childProcess.execFileSync(nodeBin, ['-e', 'setTimeout(function() {}, ' + time + ');']); // spawnSync函数 也可以// childProcess.spawnSync(nodeBin, ['-e', 'setTimeout(function() {}, ' + time + ');']);}console.time('runTime:');console.log('1', new Date());sleep(1000);console.log('2', new Date());sleep(2000);console.log('3', new Date());console.timeEnd('runTime:');// 输出如下:// 1 2022-09-18T01:37:50.387Z// 2 2022-09-18T01:37:51.445Z// 3 2022-09-18T01:37:53.500Z// runTime:: 3.113s

以上代码,是通过childProcess工具的execFileSync或者spawnSync创建⼀个同步进程,在同步进程中执⾏定时器,定时器执⾏完毕后回收进程,程序连续执⾏。

利用npm的sleep包

var sleep = require('sleep');console.log('1', new Date());console.time('runTime:');sleep.sleep(2); //休眠2秒钟console.log('2', new Date());sleep.msleep(1000); //休眠1000毫秒console.log('3', new Date());sleep.usleep(1000000) //休眠1000000微秒 = 1秒console.log('4', new Date());console.timeEnd('runTime:');// 输出如下:// 1 2022-09-18T01:42:07.302Z// 2 2022-09-18T01:42:09.311Z// 3 2022-09-18T01:42:10.320Z// 4 2022-09-18T01:42:11.334Z// runTime:: 4.028s

这个sleep支持了好几种韶光类型,很棒,但是缺陷是它是利用c++编写,某些环境下须要安装其他依赖才能支持。
比如在winserver 2008下就不能用了。

总结:多种方法,最简洁的还是 promise+ async 。

关注老胡,分享更多简洁实用的技能
标签:

相关文章

G代码在焊接领域的革新与发展

随着工业技术的不断发展,焊接技术作为制造行业的重要分支,也在不断革新。G代码作为一种在焊接过程中应用广泛的技术手段,对提高焊接质量...

SEO优化 2024-12-23 阅读0 评论0

DRC代码,推动智能制造的关键技术

随着我国制造业的快速发展,智能制造已成为行业转型升级的重要方向。而DRC代码作为智能制造领域的关键技术,正引领着我国智能制造的发展...

SEO优化 2024-12-23 阅读0 评论0

YY协议,构建和谐网络生态的利器

随着互联网技术的飞速发展,网络已成为人们生活中不可或缺的一部分。在享受网络便捷的网络暴力、侵权盗版等问题也日益突出。为了解决这些问...

SEO优化 2024-12-23 阅读0 评论0

yy协议代挂,技术革新下的游戏辅助新趋势

随着互联网的不断发展,游戏产业在我国逐渐崛起,成为人们休闲娱乐的重要方式。在游戏中,部分玩家为了追求更高的成绩和体验,开始寻求各种...

SEO优化 2024-12-23 阅读0 评论0

PVD技术,推动现代材料科学的创新发展

随着科技的飞速发展,材料科学在各个领域都扮演着至关重要的角色。作为材料科学的重要分支,物理气相沉积(Physical Vapor...

SEO优化 2024-12-23 阅读1 评论0