定时器:times的单位为毫秒。
var timer = setTimeout(fn,times); //在time时间以后执行函数fn.
如果times = 0,则表示,希望fn“尽可能快”的得到执行。
var timer = setInterval(fn,times);
//时间间隔为time,重复执行函数fn.如果fn的执行时间长于时间间隔times,那么接下来的那次将紧接着执行。
因此,如果希望每一次fn执行完了以后,经历时间间隔times都可以再一次执行(有可能被其它情况打断),
可以使用fn函数结尾调用setTimeout函数来实现。
setTimeout(function(){
//processing
setTimeout(arguments.callee, interval);
}, interval);
Timer的一个应用:
var processor = {
timeoutId: null,
//method that actually performs the processing
performProcessing: function(){
//actual processing code
},
//method that is called to initiate processing
process: function(){
//不过有没有执行,把它取消。
clearTimeout(this.timeoutId);
var that = this;
this.timeoutId = setTimeout(function(){
that.performProcessing();
}, 100);
}
};
//try to start processing
processor.process();
在这个模式中,可以保证,即使在100毫秒以内process()被调用了多次,那么performProcessing最终也只会被执行一次。
可以用以下一个精简的函数实现上面的功能:
function throttle(method, context) {
clearTimeout(method.tId);
method.tId= setTimeout(function(){
method.call(context);
}, 100);
}
在IE中,window的resize事件会调用函数多次。我们可以通过throttle函数来消除这种问题。
function resizeDiv(){
var div = document.getElementById("myDiv");
div.style.height = div.offsetWidth + "px";
}
window.onresize = function(){
throttle(resizeDiv);
};
分享到:
相关推荐
在编程领域,定时器是一种非常重要的工具,它用于在特定的时间间隔执行某个任务或检查某个条件。本示例中,我们关注的是一个基于Windows API...在实际项目中,开发者可以根据需求对这个定时器进行进一步的优化和定制。
`timer:cancel_timer/1`接收一个定时器引用,并尝试取消已经设置的定时器。这是确保程序正确终止和避免资源泄漏的重要手段,特别是在需要提前结束定时任务的情况下。 Erlang的timer实现机制基于Erlang的进程模型。...
本项目基于C#2008,旨在实现线程和定时器的基本功能,包括开启和关闭,同时也提供了一个简单的用户界面,方便进一步的开发和扩展。 首先,我们来探讨一下线程。线程是操作系统分配CPU时间的基本单元,它允许程序...
4. **控制定时器**:可以使用`invalidate`方法停止定时器,防止进一步触发。 ```objc [timer invalidate]; timer = nil; ``` 5. **重复与非重复定时器**:通过传递`YES`或`NO`给`repeats`参数,可以选择定时器是否...
本文提出的"ETimer(Enhanced Timer)"是一种针对嵌入式Linux的高性能定时器实现方法,它通过对标准Linux内核的时钟中断处理程序进行优化,提高了定时器的分辨率和中断优先级,从而实现了更精确的定时,并减少了硬件...
1. 更低的内存开销:与NSTimer相比,GCD定时器不需要保持对目标对象的引用,降低了内存泄漏的风险。 2. 更好的性能:GCD自动利用多核处理器的优势,使得定时器的执行更加高效。 3. 灵活性:可以轻松地控制定时器的...
通过阅读和分析这个文件,你可以进一步了解如何在实际项目中使用C++11特性来创建一个功能完备、健壮的定时器组件。这个组件可以被用于各种用途,如定期执行维护任务、游戏中的计时器、网络请求超时控制等。
1. **头文件**:定义了定时器的相关结构体、函数原型和常量,供其他源文件引用。 2. **源文件**:实现了定时器的初始化、配置、启动和停止等操作的函数。 3. **配置文件**:可能包含定时器的工作模式、频率和比较值...
这是必要的,因为`invalidate`会将定时器从run loop中移除,并阻止其进一步的回调。 2. **Weak Reference**: 将定时器设置为弱引用(`__weak`),这样当目标对象销毁时,弱引用会自动失效,定时器也会因为没有强...
将Timer控件的名称设置为"timer1",以便在代码中引用它。接下来,我们需要设置它的Interval属性,这是定时器触发Tick事件的时间间隔。在这里,我们将设置Interval为1000毫秒,即每秒触发一次。在属性窗口中找到...
在 `data` 属性中,我们有一个名为 `msg` 的数据属性,它包含跑马灯的文本,以及一个 `timer` 属性,初始值为 `null`,用于存储定时器的引用。 `methods` 属性包含了两个方法:`run` 和 `stop`。`run` 方法用于启动...
在本文中,我们将深入探讨如何在Windows Mobile平台上创建一个简单的时钟应用,使用C#编程...对于进一步的学习,可以考虑添加更多的功能,如闹钟、定时器或者日期显示,这将有助于深化对C#和Windows Mobile开发的理解。
标题中的"Protues仿真实例-MEGA16-T1_Capature.rar"表明这是一个使用Protues软件进行的AVR微控制器MEGA16的仿真项目,重点在于理解并实现定时器1(Timer1)的捕获模式。Protues是一款流行的电路仿真软件,尤其在...
在VB工程中,点击“工具”菜单,选择“引用”,在弹出的对话框中找到"Microsoft PowerPoint xx.x Object Library"(这里的xx.x代表你的PowerPoint版本号),勾选它,然后确定。这样,我们就可以使用PowerPoint的对象...
在这个例子中,`Timer`类的`Elapsed`事件是通过委托`ElapsedEventHandler`定义的,`Start`方法模拟了定时器的运行,`OnElapsed`方法触发事件。在`Main`方法中,我们创建了一个`Timer`实例,并将其`Elapsed`事件与`...
在VC中,可以使用`CTimer`类或者`SetTimer`函数来创建定时器。定时器触发时,会发送一个`WM_TIMER`消息,程序通过处理这个消息来实现定时更新,例如,更新笑脸的位置,使其看起来在移动。 项目中的源文件结构如下:...
`timer`用于保存定时器的引用,以便在需要时停止抽奖。 HTML部分包括一个容器`#container`,其中包含显示奖品的`<p>`元素(`#text`)以及两个按钮(`#btn-start`和`#btn-stop`)。按钮的点击事件分别关联到`start`...
首先,滚动字幕的基本原理是利用定时器(Timer)控制文字的移动,通过改变文字的位置来实现滚动效果。C#中的System.Timers.Timer或System.Windows.Forms.Timer类可以用于实现定时触发事件。 1. **控件选择**:在...
描述中提到的"用timer生成的每秒产生-200到-300的随机数画出的曲线图",这涉及到C++的定时器功能和随机数生成。在VC2010中,我们可以使用`System::Windows::Forms::Timer`类来实现定时任务。首先创建一个`Timer`对象...
1. **定时器控件(Timer)**:VB提供了Timer控件,可以设置间隔时间,每隔一定时间触发一次事件,如Timer1_Timer事件。在这个事件中,我们可以处理逐字显示的逻辑。 2. **文本输入控件(TextBox)**:用户输入的...