Как определить, находится ли переменная в диапазоне более 2 секунд непрерывно в JavaScript - PullRequest
1 голос
/ 15 января 2020

Я пишу этот код JavaScript, чтобы определить, молчит ли живая запись более 2 секунд. Я использовал библиотеку, чтобы получить значения уровня mi c и обновлять ее до переменной каждые 100 мс. (функция выводит значения между 0-1, если она молчит, и значением больше 1, если речь присутствует). Я хочу показать предупреждение "Вы замолчали", если переменная levels находится в диапазоне 0-1 в течение 2 последовательных секунд.

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

Как мне продолжить это?

Ответы [ 2 ]

3 голосов
/ 15 января 2020

Помните, последний раз громкость была громкой. Реагируйте, если это было 2 секунды go.

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);
3 голосов
/ 15 января 2020

Вместо переназначения переменной, соответствующей громкости, когда громкость меньше 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);
...