назад до уроку

Вивід кожної секунди

важливість: 5

Напишіть функцію printNumbers(from, to) яка виводить число кожну секунду, починаючи від from і закінчуючи to.

Зробіть два варіанти рішення.

  1. Використовуючи setInterval.
  2. Використовуючи вкладений setTimeout.

Використовуючи setInterval:

function printNumbers(from, to) {
  let current = from;

  let timerId = setInterval(function() {
    alert(current);
    if (current == to) {
      clearInterval(timerId);
    }
    current++;
  }, 1000);
}

// використання:
printNumbers(5, 10);

Використовуючи вкладений setTimeout:

function printNumbers(from, to) {
  let current = from;

  setTimeout(function go() {
    alert(current);
    if (current < to) {
      setTimeout(go, 1000);
    }
    current++;
  }, 1000);
}

// використання:
printNumbers(5, 10);

Зауважте, що в обох рішеннях є початкова затримка перед першим виходом. Функція викликається після 1000 мс у перший раз.

Якщо ми також хочемо, щоб функція запускалася негайно, ми можемо додати додатковий виклик в окремому рядку, наприклад:

function printNumbers(from, to) {
  let current = from;

  function go() {
    alert(current);
    if (current == to) {
      clearInterval(timerId);
    }
    current++;
  }

  go();
  let timerId = setInterval(go, 1000);
}

printNumbers(5, 10);