Здравствуйте!
У меня вот такой вопрос.
У меня стоит setInterval(). Например через 3 минуты. Но мне надо чтобы он сработал выполнилась функция, и при определённых условиях я не хочу срабатывания функции. То есть, в функции сразу ретурн.
И вопрос. Когда setInterval ждёт эти 3 минуты. Он тратит ресурс, что-то считает, ибо как-то же он должен знать что прошло именно 3 минуты?
Если да и это много, может тогда всё же использовать clearsetInterval().
Но тогда опять надо запускать после clearsetInterval().
Главный вопрос как много setInterval() тратит на свою работу.
1. ytrewq123 - 28 Декабря, 2017 - 12:21:08 - перейти к сообщению
2. rgl - 28 Декабря, 2017 - 12:27:56 - перейти к сообщению
Вопрос по JavaScript?
Ничего setInterval в данном случе на работу не тратит...
Ничего setInterval в данном случе на работу не тратит...
3. ytrewq123 - 28 Декабря, 2017 - 12:35:47 - перейти к сообщению
Спасибо.
Да JavaScript, ничего???
А как он узнаёт что пришло время сработать.
Да JavaScript, ничего???
А как он узнаёт что пришло время сработать.
4. rgl - 28 Декабря, 2017 - 14:28:18 - перейти к сообщению
ytrewq123 пишет:
А как он узнаёт что пришло время сработать.
Это уже зависит от конкретной реализации. Ну напр. если браузер для Windows написан на C/C++, вызовет какую-нибудь функцию операционки, (типа Sleep(), WaitForSingleObject() ) и операционка его "разбудит" когда время наступит. Это всего лишь предположение, один из возможных вариантов...
5. Строитель - 28 Декабря, 2017 - 15:02:56 - перейти к сообщению
ytrewq123 пишет:
Здравствуйте!
У меня вот такой вопрос.
У меня стоит setInterval(). Например через 3 минуты. Но мне надо чтобы он сработал выполнилась функция, и при определённых условиях я не хочу срабатывания функции. То есть, в функции сразу ретурн.
И вопрос. Когда setInterval ждёт эти 3 минуты. Он тратит ресурс, что-то считает, ибо как-то же он должен знать что прошло именно 3 минуты?
Если да и это много, может тогда всё же использовать clearsetInterval().
Но тогда опять надо запускать после clearsetInterval().
Главный вопрос как много setInterval() тратит на свою работу.
У меня вот такой вопрос.
У меня стоит setInterval(). Например через 3 минуты. Но мне надо чтобы он сработал выполнилась функция, и при определённых условиях я не хочу срабатывания функции. То есть, в функции сразу ретурн.
И вопрос. Когда setInterval ждёт эти 3 минуты. Он тратит ресурс, что-то считает, ибо как-то же он должен знать что прошло именно 3 минуты?
Если да и это много, может тогда всё же использовать clearsetInterval().
Но тогда опять надо запускать после clearsetInterval().
Главный вопрос как много setInterval() тратит на свою работу.
* Управление памятью
Сборщик мусора в JavaScript не чистит функции, назначенные в таймерах, пока таймеры актуальны.
При передаче функции в setInterval/setTimeout создаётся внутренняя ссылка на неё, через которую браузер её будет запускать, и которая препятствует удалению из памяти, даже если функция анонимна.
CODE (javascript):
скопировать код в буфер обмена
скопировать код в буфер обмена
- // Функция будет жить в памяти, пока не сработал (или не был очищен) таймер
- setTimeout(function() {}, 100);
- Для setTimeout – внутренняя ссылка исчезнет после исполнения функции.
- Для setInterval – ссылка исчезнет при очистке таймера.
Так как функция также тянет за собой всё замыкание, то ставшие неактуальными, но не отменённые setInterval могут приводить к излишним тратам памяти.
Источник