解决setInterval休眠问题 real-interval

MIT
JavaScript 查看源码»
跨平台
2016-10-03
hapjs

real-interval

如果你用setTimeout或setInterval实现过网页倒计时功能,你就会发现:

当电脑或者APP休眠了一段时间后,倒计时会出现问题:它比正确的时间慢了。

real-interval能解决这个问题。

当休眠的电脑被唤醒后,它会计算出正确的运行时间,你的回调函数可以据此显示正确的剩余时间,或者判断何时应该停止倒计时。

安装

你可以通过npm安装real-interval

npm install real-interval

OR通过脚本引入它:

<script src="./build/interval.js"></script>

用法 1

在经过指定个数的时间间隔后停止

var timer = new Interval(function(pass){

    console.log(pass);

    // stop after 24 hours
    if(pass == 60*60*24){
        this.stop();
    };

}, 1000);

打印结果:

1
2
3
4
5
6
...
86400

这个例子中的 pass 是一个计数器, 表示当前经过了多少个1000毫秒。

用法 2

设定执行次数,自动停止

// automatic stop after 6 seconds
var timer = new Interval(function(pass){

    console.log(pass);

}, 1000, 6);

打印结果:

1
2
3
4
5
6

这个例子中的定时器会在6秒后自动停止。

用法 3

显示剩余时间

var timer = new Interval(function(pass, surplus){

    console.log('stop after ' + surplus + ' seconds');

}, 1000, 6);

打印结果:

stop after 5 seconds
stop after 4 seconds
stop after 3 seconds
stop after 2 seconds
stop after 1 seconds
stop after 0 seconds

这个例子会显示距离停止还有多少秒。

用法 4

立即执行

var timer = new Interval(function(pass, surplus){

    console.log('stop after ' + surplus + ' seconds');

}, 1000, 6, true);

打印结果:

stop after 6 seconds
stop after 5 seconds
stop after 4 seconds
stop after 3 seconds
stop after 2 seconds
stop after 1 seconds
stop after 0 seconds

这个例子与上个例子不同的地方在于, 回调函数会立即被调用, 而不是1秒之后。

的码云指数为
超过 的项目
加载中

评论(0)

暂无评论

暂无资讯

暂无问答

Python2.7 signal

在liunx系统中要想每隔一分钟执行一个命令,最普遍的方法就是crontab了,如果不想使用crontab,经同事指点在程序中可以用定时器实现这种功能,于是就开始摸索了,发现需要一些信号的知识......

2013/06/06 16:01
1K
0
linux精确定时器设置

精通定时器设置 函数alarm设置的定时器只能精确到秒,而以下函数理论上可以精确到微妙: #include <sys/select.h> #include <sys/itimer.h> int getitimer(int which, struct itimerval *val...

2013/04/11 20:22
308
0
tsar的使用

项目地址 https://github.com/alibaba/tsar 安装 $ git clone git://github.com/kongjian/tsar.git $ cd tsar $ make # make install 或者 $ wget -O tsar.zip https://github.com/alibaba/...

2017/10/25 09:23
30
0
nginx反向代理配置去除前缀

使用nginx做反向代理的时候,可以简单的直接把请求原封不动的转发给下一个服务。设置proxy_pass请求只会替换域名,如果要根据不同的url后缀来访问不同的服务,则需要通过如下方法: 方法一:...

03/23 14:03
10
0
定时器函数setitimer

1.介绍   在linux下如果定时如果要求不太精确的话,使用alarm()和signal()就行了(精确到秒),但是如果想要实现精度较高的定时功能的话,就要使用setitimer函数。   setitimer()为Linux...

2016/07/27 11:56
19
0
检查resin的gc相关log的脚本(nagios插件版)-python

输入:log_path-日志位置;间隔监控时间(单位为分钟);full_gc_count-fullgc次数报警值;gc_interval-gc间隔时间报警值;gc_count-gc次数报警值 输出:当被检查log中有任一项报警内容大于报警值的时...

2013/03/20 20:03
187
0
一些数学名词的笔记

算数(arithmatic): 代数(algebra): 初等代数(elementary algebra): 抽象代数(abstract algebra) 几何(geometry) 数论(number thoery) 群(group) 环(ring):一个代数结构,定义了广义化的算...

2014/10/16 16:28
121
0
iOS定时器

相关类:NSTimer A timer is not a real-time mechanism; it fires only when one of the run loop modes to which the timer has been added is running and able to check if the timer’s...

2014/12/30 14:42
14
0
创建Datafeeds API

创建 Datafeeds API 此API可以创建一个datafeed 实例 请求 PUT _xpack/ml/datafeeds/<feed_id> 描述 创建datafeed之前,需要先创建job,可以给每个job创建单独的一个datafeed 路径参数 feed...

2018/01/19 09:51
11
0

没有更多内容

加载失败,请刷新页面

返回顶部
顶部