JS中一种实现sleep函数的方案
2017-08-15 15:29
369 查看
困扰了我很久的问题,在此留个记录
①原生js
②setInterval和setTimeout
③近似递归的处理方法
还有一种死循环写法(参考自网络)
思路是利用系统时间,一旦没有运行到自己设定的时间就让程序一直在循环里计算(个人感觉实现简单,实际运行可能有点恐怖)
①原生js
②setInterval和setTimeout
③近似递归的处理方法
因为js是单线程,所以计时器也是有顺序的
//问题描述:我想实现一个网页的图片左右滑动效果(不是切换), //要求:每次滑动一张图片,然后停止1s,再滑动……停止…… //解决思路:给图片滑动写一个方法,执行一次移动一小点距离,n次后移动完整张图片,使用setInterval函数去执行这个n次循环的操作;然后使用setTimeout函数去完成1s的等待。 //大概思想代码描述如下: 假设每一张图片宽度值为100 var n = 20;//次数统计 function animation(){ n--; left = left-5; if(n == 0){ n = 20; //满足条件就停止播放动画的计时器,从而达到‘阻塞’的效果 window.clearInterval(timer); //设置超时计时器,延时1s执行 window.setTimeout(function(){ //清除运行中的计时器(没有则不管) window.clearInterval(timer); //设置动画的运行的计时器(此时超时计时器已经没有了) window.setInterval(animation,20); },1000); } } var timer = window.setInterval(animation,20); //效果就是每20ms执行一次图片操作,执行20次之后就等待1000ms,不会因为js暂停之类的系统优化策略导致滑动位置错误 //延时操作是为了开启动画计时器
还有一种死循环写法(参考自网络)
思路是利用系统时间,一旦没有运行到自己设定的时间就让程序一直在循环里计算(个人感觉实现简单,实际运行可能有点恐怖)
function sleep(numberMillis) { //记录当前时间 var now = new Date(); //设置未来的某个时间 var exitTime = now.getTime() + numberMillis; while (true) { //获取当前时间 now = new Date(); //检查是否到了设置好的未来时间 if (now.getTime() > exitTime) return; } }
相关文章推荐
- 一种基于浏览器的自动小票机打印实现方案(js版)
- cocos2d-js h5横竖屏切换的一种实现方案
- 一种基于浏览器的自动小票机打印实现方案(js版)
- 一种基于delphi巧妙权限控制方案及其实现方法
- Hybrid----优秀开源代码解读之JS与iOS Native Code互调的优雅实现方案
- canvas 追踪 js实现方案 实现浏览器唯一标示 标记
- 一种基于 SOA 的应用程序的动态实现框架方案
- 一种基于主板BIOS的身份认证方案及实现
- 密码等级:至少包含字母、大小写数字、字符中的两种 JS实现方案
- 抛砖引玉-使用Acegi实现多种用户登录的一种方案
- AngularJS+RequireJs实现动态加载JS和页面的方案研究
- js颜色选择器的两种实现直接上代码(代码里有一种,附件里是另一种)
- 基于spark排序的一种更廉价的实现方案-附基于spark的性能测试
- 一种常见(粒度,统计值)报表的实现方案
- Android使用js方案实现在线浏览pdf文档
- JS 实现文章资讯添加热词链接的一种方式
- 什么是文件的安全性问题,如何实现对文件的保护,试列举一种实现方案并加以说明?
- 在线用户列表实现的一种方案
- 一种基于主板BIOS的身份认证方案及实现
- PHP中插件机制的一种实现方案