分享
三行代码  ›  专栏  ›  技术社区  ›  Clutch Prince

如何在JavaScript中检测变量是否连续位于范围内超过2秒

  •  0
  • Clutch Prince  · 技术社区  · 5 天前

    我编写此JavaScript代码是为了检测实时录制是否静音超过2秒。我使用一个库来获取麦克风音量值,并每100毫秒将其更新为一个变量(如果静音,则函数输出0-1之间的值,如果有语音,则输出大于1的值)。如果变量 levels 在0-1范围内连续2秒。

       var levels;
       setInterval(function(){
       levels=meter.volume*1000;
       },100);
    

    我该怎么做?

    2 回复  |  直到 5 天前
        1
  •  3
  •   CertainPerformance    5 天前

    当体积小于1时,而不是重新分配与体积相对应的变量 当前未设置超时,请设置一个在2秒后运行的超时,以提醒用户。当卷大于1时清除超时:

    let timeout;
    setInterval(function(){
      const vol = meter.volume * 1000;
      if (vol > 1) {
        clearTimeout(timeout);
        timeout = null;
      } else if (!timeout) {
        timeout = setTimeout(() => {
          console.log("You became silent");
        }, 2000);
      }
    },100);
    

    现场演示:

    let timeout;
    setInterval(function() {
      const vol = Math.random() + 0.05;
      console.log(vol);
      if (vol > 1) {
        clearTimeout(timeout);
        timeout = null;
      } else if (!timeout) {
        timeout = setTimeout(() => {
          alert("You became silent");
        }, 2000);
      }
    }, 100);
        2
  •  3
  •   Amadan    5 天前

    let lastLoud = new Date();
    setInterval(() => {
      let now = new Date();
      if (now - lastLoud >= 2000) {
        console.log("You became silent");
      }
      let levels = meter.volume * 1000;
      if (levels > 1) {
        lastLoud = now;
      }
    }, 100);