Может кто-нибудь объяснить, как работает счетчик setInterval?

Я создал var для setInterval, поэтому я могу остановить его с помощью clearInterval как такового:

var repeat = setInterval(sayHello, 2000); 
function sayHello() { 
    alert("Hello"); 
}

и вот clearInterval:

clearInterval(repeat)

Теперь, в Firefox, когда я запустил этот бит, если я хочу узнать значение «повторить», он возвращает количество времени, в течение которого выполнялся интервал. Однако в Chrome, независимо от того, сколько раз он запускался, он всегда возвращает 1. Если я не выполняю всю процедуру заново, он возвращает 2. Он в основном увеличивает экземпляры, а не интервальные вхождения.

Любой, кто может пролить свет на это, как это работает и почему ... очень признателен!

Нет, repeat — это нет количество срабатываний таймера. Это просто номер идентифицирует таймера в системе. Каждый браузер управляет идентификаторами таймера по-разному, но цель одна и та же.

Pointy 31.01.2019 17:46

Просто подумайте об этом: если repeat будет количеством времени, в течение которого выполняется интервал, как clearInterval() будет использовать это, чтобы остановить текущий интервал?

Shidersz 31.01.2019 17:50

Большое спасибо, ребята!

Sylvan Hughes 31.01.2019 17:56
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
0
4
174
1

Ответы 1

Гарантируется только то, что setInterval вернет дескриптор, который затем может быть использован clearInterval. В остальном браузер полностью зависит от того, что это за дескриптор и как он используется. Даже если кажется, что он предоставляет некоторую информацию в одном конкретном браузере, на нее нельзя полагаться никоим образом, поскольку она может быть изменена.

Цитирую МДН:

The returned intervalID is a numeric, non-zero value which identifies the timer created by the call to setInterval(); this value can be passed to WindowOrWorkerGlobalScope.clearInterval() to cancel the timeout.

Не ожидайте и не полагайтесь на это, чтобы быть чем-то другим.

Другие вопросы по теме