当前位置: 首页 > news >正文

实现sleep函数

作用:让线程休眠,等到指定时间在重新唤起。

  • 基于Date实现:
    • 以上的代码不会让线程休眠,而是通过高负荷计算使cpu无暇处理其他任务。
    • 缺点是在sleep的过程中其他所有的任务都会被暂停,包括dom的渲染。
    • sleep的过程中程序会处于假死状态,并不会去执行其他任务
function sleep(time){var timeStamp = new Date().getTime();var endTime = timeStamp + time;while(true){if (new Date().getTime() > endTime){return;} }
}
  • 基于定时器+promise
function sleep(time) {return new Promise(resolve => setTimeout(resolve, time))
} 
sleep(1000).then(()=>{ console.log(1) })
  • 基于Generator函数,搭配co模块
var co = require('co');
function sleep(time){return new Promise(function(resolve){setTimeout(resolve, time);});
}
var run = function* (){console.time('runTime:');console.log('1');yield sleep(2000);console.log('2');yield sleep(1000);console.log('3'); console.timeEnd('runTime:');
}co(run);
http://www.lryc.cn/news/291486.html

相关文章:

  • 汽车销量可视化分析
  • 代码随想录算法训练营DAY8 | 字符串(1)
  • 如何更改Outlook阅读邮件时的默认字体?
  • 【C++基础入门】三、运算符(算术运算符、赋值运算符、比较运算符、逻辑运算符)
  • ES7.17由于IP变化导致的故障及恢复
  • uniapp H5 touchstart touchend 切换背景会失效,或者没用
  • 【word visio绘图】关闭visio两线交叉的跳线(跨线)
  • meson、ninja编译dpdk
  • diff命令详解
  • Backtrader 文档学习- Broker - Slippage
  • 三子棋游戏小课堂
  • golang开源的可嵌入应用程序高性能的MQTT服务
  • uniapp微信小程序-请求二次封装(直接可用)
  • UE4 C++ 结构体
  • 软件工程知识梳理0-概述
  • 贪吃蛇---C语言---详解
  • Airflow原理浅析
  • uniapp 使用canvas 画海报,有手粘贴即可用
  • Vite+Vue3+TS 引入使用Cesium.js
  • Cocos creator 动作系统
  • 对Spring当中AOP的理解
  • 【Vue】2-8、Axios 网络请求
  • Vue中嵌入原生HTML页面
  • streampark+flink一键整库或多表同步mysql到doris实战
  • Vim实战:使用 Vim实现图像分类任务(二)
  • 学习MySQL ENUM数据类型
  • 88.合并两个有序数组
  • python查询xml类别
  • nginx配置及性能优化
  • 阿里云如何找回域名,进行添加或删除?