上面的定时器如何死循环
时间: 2023-07-07 12:39:29 浏览: 50
如果你想让定时器脚本像一个死循环一样一直执行下去,可以在handler函数中添加一个死循环。修改上面的示例代码,如下所示:
```
local delay = 5 -- 5秒后执行
local handler
handler = function(premature)
if premature then
return
end
-- 在这里编写需要执行的代码
-- 添加死循环
while true do
-- 在这里编写需要一直执行的代码
end
-- 设置下一次执行时间
ngx.timer.at(delay, handler)
end
-- 初始化定时器
ngx.timer.at(delay, handler)
```
在上面的代码中,我们在handler函数中添加了一个无限循环while true,这样定时器脚本就会一直执行下去。需要注意的是,如果你这样做了,那么定时器脚本会一直占用着OpenResty的进程资源,这可能会影响到其他请求的处理速度,因此需要谨慎使用。
相关问题
js 如何写定时器 一直循环
在 JavaScript 中可以使用 `setInterval()` 函数来创建一个定时器,让某个函数周期性地执行。下面是一个例子:
```
setInterval(function() {
console.log("Hello, world!");
}, 1000);
```
上面的代码会每隔 1 秒输出一次 "Hello, world!" 到控制台。如果你想要让这个定时器一直循环执行,直到页面被关闭或者定时器被清除,可以使用一个无限循环的 `while` 循环来实现。
```
while (true) {
setInterval(function() {
console.log("Hello, world!");
}, 1000);
}
```
上面的代码会无限循环创建定时器,每隔 1 秒输出一次 "Hello, world!" 到控制台。但是需要注意的是,这样做会让浏览器陷入死循环,导致页面无响应,因此不建议在实际应用中使用。
cc2530定时器计时
在CC2530中,可以使用Timer1和Timer2来进行定时器计时。其中,Timer1是16位定时器,Timer2是8位定时器。下面是使用Timer1进行定时器计时的示例代码:
```c
#include "ioCC2530.h"
void Init_Timer1(void)
{
T1CTL |= 0x04; //选择ACLK作为计数时钟
T1CTL &= ~0x03; //选择模式0
T1IE = 1; //使能定时器1中断
}
#pragma vector=T1_VECTOR
__interrupt void Timer1_ISR(void)
{
//定时器1中断处理函数
}
void main(void)
{
Init_Timer1();
EA = 1; //使能总中断
while(1);
}
```
在上面的代码中,我们首先通过`Init_Timer1()`函数初始化了Timer1,并使能了Timer1中断。然后在`main()`函数中,我们使能了总中断,并进入了一个死循环,等待Timer1中断的发生。