Как остановить запуск setInterval в блоке дел - PullRequest
0 голосов
/ 16 апреля 2020

            var text = //string from user input
            switch (text) {
            case 'yes':
                var myint = setInterval(async () => {
                    //do something
                }, 1000);
                break;
            case 'stop':
                clearInterval(myint)
                break;
            case 'no':
                console.log('ok')
                break;
            default:
                console.log('hi');
            }

Этот код принимает пользовательский ввод, преобразует его в строку и передает его в оператор switch. Как видно из приведенного выше фрагмента, когда text = 'yes', начинается интервал. Но когда пользователь вводит no, т.е. text = 'no', чтобы запустить интервал очистки, интервал не останавливается. Как мне это с или без setInterval?

Ответы [ 2 ]

0 голосов
/ 16 апреля 2020

Вы имеете в виду, как это?

var myint;
document.querySelector("select").onchange = function() {
  var text = this.value, i = 0;
  switch(text) {
    case 'yes':
      myint = setInterval(async () => {
        console.log(++i);
      }, 1000);
      break;
    case 'no':
      clearInterval(myint);
      break;
  }
}
<select>
  <option value="no">No</option>
  <option value="yes">Yes</option>
</select>
0 голосов
/ 16 апреля 2020

Вы должны объявить var перед областью действия.

var text = "userinput";
// declare globally
var myint;

switch (text) {
case 'yes':
    var myint = setInterval(async () => {
        //do something
    }, 1000);
    break;
case 'stop':
    clearInterval(myint)
    break;
case 'no':
    console.log('ok')
    break;
default:
    console.log('hi');
}
...