Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/371.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript Node.js:Nested setInterval()-Methods-internal-one不';停不下来_Javascript_Node.js_Setinterval_Timing - Fatal编程技术网

Javascript Node.js:Nested setInterval()-Methods-internal-one不';停不下来

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

我需要node.js中正确计时的重复事件。为了获得比通常的setInterval方法更高的分辨率,我使用了
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可能有一点道理。我开发了一个(糟糕的)解决方法,通过取消对它们的测试并在全局变量上交换对时间敏感的数据。