В чем разница между setTimeout и setInterval

«В чем разница между setTimeout и setInterval» — вопрос из категории Асинхронность, который задают на 10% собеседований Frontend Разработчик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

setTimeout выполняет функцию один раз через указанный интервал времени. setInterval вызывает функцию повторно с заданным интервалом, пока не будет очищен.

Пример:

// setTimeout - выполнится один раз через 1 секунду
setTimeout(() => console.log('Timeout!'), 1000);

// setInterval - будет выводить 'Interval!' каждую секунду
const intervalId = setInterval(() => console.log('Interval!'), 1000);

// Остановка интервала через 3 секунды
setTimeout(() => clearInterval(intervalId), 3000);

Нюансы:

  • Оба метода возвращают ID, который можно использовать для отмены (clearTimeout/clearInterval).
  • Время выполнения не гарантировано — зависит от загрузки основного потока.
  • setInterval может накладываться, если функция выполняется дольше интервала.