【问题标题】:Tracking a value for X time跟踪 X 时间的值
【发布时间】:2021-09-29 07:28:35
【问题描述】:

如何在 Nodejs 中跟踪滚动时间段内的值?

IE: 每 10 秒可能返回“1”或“0”的事件, 如果此事件在最后 5 分钟内每 10 分钟返回一个“1”,则发出 true 但如果在过去 5 分钟内有一个或多个“0”实例,则发出 false

我做了一些谷歌搜索,但似乎一直指向 setTimer 函数,这不是我想要的。

任何人都可以提供一些指导,感谢任何帮助。

【问题讨论】:

    标签: javascript node.js time event-tracking time-tracking


    【解决方案1】:

    在极少数情况下,如果有 一个 或多个 0 实例,我们可以在事件给出 0 时发出 false:

    var place = 0;
    var intv = setInterval(() => { 
      if (place > 30){ // 30 * 10 seconds = 5 mins
        console.log("true");
        clearInterval(intv);
      }
      place++;
      if (event() == '0'){
        console.log("false");
        clearInterval(intv);
      }
    }, 10000); //10 seconds
    

    如果超过 1 次,例如问题出现 7 次或更多次,我们可以使用变量来跟踪事件结果:

    var instancesOfZero = 0;
    var place = 0;
    var intv = setInterval(() => {
      if (instancesOfZero == 7) { // 7 is the desired # of instances to emit false
        console.log("false");
        clearInterval(intv);
      }
      if (place > 30){
        console.log("true");
        clearInterval(intv);
      }
      place++;
      if (event() == '0'){
        instancesOfZero++;
      }
    }, 10000);
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多