Javascript Node.js:Nested setInterval()-Methods-internal-one不';停不下来
我需要node.js中正确计时的重复事件。为了获得比通常的setInterval方法更高的分辨率,我使用了Javascript Node.js:Nested setInterval()-Methods-internal-one不';停不下来,javascript,node.js,setinterval,timing,Javascript,Node.js,Setinterval,Timing,我需要node.js中正确计时的重复事件。为了获得比通常的setInterval方法更高的分辨率,我使用了process.hrtime()。npm模块“nanotimer”(,)提供了一些常用方法,如setInterval()和setTimeOut() 这两个计时器应同时停止 代码如下: var NanoTimer = require('nanotimer'); var timerA = new NanoTimer(); var timerB = new NanoTimer(); var i
process.hrtime()
。npm模块“nanotimer”(,)提供了一些常用方法,如setInterval()
和setTimeOut()
这两个计时器应同时停止
代码如下:
var NanoTimer = require('nanotimer');
var timerA = new NanoTimer();
var timerB = new NanoTimer();
var index = 0;
timerA.setInterval(function(){
console.log("A");
timerB.setInterval(function(){
console.log("B");
}, '3s');
if(index > 10){
console.log("Stop Timer A");
timerA.clearInterval();
console.log("Stop Timer B");
timerB.clearInterval();
}
index++;
}, '1s');
输出:
A
A
A
A
B
A
A
A
B
A
A
A
B
A
A
Stop Timer A
Stop Timer B //correct up to here
B //timerB continues forever, every 3 seconds
B
B
...
我找不到停止内部计时器的方法。您有什么建议吗?node.js非常擅长基于异步回调的编程-您具体使用setInterval的目的是什么(为什么需要高精度的定时信号)?因为我怀疑您试图使用setInterval的原因,您可能不需要setInterval for。您为B设置了许多间隔(每次执行一个),但您只取消B的最后一个间隔…我非常确定您不希望在A回调中生成B间隔。你想做什么?目标:使用外部setInterval()我通过SPI接口模拟2KHz的传入数据(我使用
索引
迭代数据数组),使用内部setInterval,我通过websocket以定义的频率将它们推送到客户端。@dandavis可能有一点道理。我开发了一个(糟糕的)解决方法,通过取消对它们的测试并在全局变量上交换对时间敏感的数据。