Встречается на собеседованиях • сегодня

При каком условии могут пересечься две tasks в setInterval

Две задачи в setInterval могут пересечься, если время выполнения задачи превышает интервал между вызовами. Например:

javascript
setInterval(() => {
  // Допустим, эта задача выполняется 300мс
  heavyTask(); 
}, 200); // Интервал 200мс

В этом случае:

  1. Первая задача запускается в 0мс
  2. Завершается в ~300мс
  3. Вторая задача должна была запуститься в 200мс, но движок JS (однопоточный) занят первой задачей
  4. Вторая задача запустится сразу после завершения первой (~300мс)

Результат - задачи накладываются, интервал не соблюдается. Для точного интервала между завершениями задач лучше использовать рекурсивный setTimeout:

javascript
function runTask() {
  heavyTask();
  setTimeout(runTask, 200);
}
runTask();
Sophi
Софи собрала все вопросы. Тренируйся и получай
офферы быстрее!
Попробовать бесплатноArrow

Следующий вопрос

Это единственный вопрос по вашему фильтру

как отвечать на вопрос
пример собеседования
фреймворки на собеседовании
типичные вопросы junior
интервью вопросы и ответы