Форумы портала PHP.SU » » Вопросы новичков » setInterval()!!!

Страниц (1): [1]
 

1. ytrewq123 - 28 Декабря, 2017 - 12:21:08 - перейти к сообщению
Здравствуйте!
У меня вот такой вопрос.
У меня стоит setInterval(). Например через 3 минуты. Но мне надо чтобы он сработал выполнилась функция, и при определённых условиях я не хочу срабатывания функции. То есть, в функции сразу ретурн.
И вопрос. Когда setInterval ждёт эти 3 минуты. Он тратит ресурс, что-то считает, ибо как-то же он должен знать что прошло именно 3 минуты?
Если да и это много, может тогда всё же использовать clearsetInterval().
Но тогда опять надо запускать после clearsetInterval().
Главный вопрос как много setInterval() тратит на свою работу.
2. rgl - 28 Декабря, 2017 - 12:27:56 - перейти к сообщению
Вопрос по JavaScript?
Ничего setInterval в данном случе на работу не тратит...
3. ytrewq123 - 28 Декабря, 2017 - 12:35:47 - перейти к сообщению
Спасибо.
Да 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() тратит на свою работу.


* Управление памятью
Сборщик мусора в JavaScript не чистит функции, назначенные в таймерах, пока таймеры актуальны.
При передаче функции в setInterval/setTimeout создаётся внутренняя ссылка на неё, через которую браузер её будет запускать, и которая препятствует удалению из памяти, даже если функция анонимна.
CODE (javascript):
скопировать код в буфер обмена
  1. // Функция будет жить в памяти, пока не сработал (или не был очищен) таймер
  2. setTimeout(function() {}, 100);

    Для setTimeout – внутренняя ссылка исчезнет после исполнения функции.
    Для setInterval – ссылка исчезнет при очистке таймера.

Так как функция также тянет за собой всё замыкание, то ставшие неактуальными, но не отменённые setInterval могут приводить к излишним тратам памяти.
Источник
6. rgl - 28 Декабря, 2017 - 15:25:51 - перейти к сообщению
Строитель пишет:
Сборщик мусора в JavaScript не чистит функции, назначенные в таймерах, пока таймеры актуальны.

Так судя по вопросу, функцию как раз нужно сохранить:
ytrewq123 пишет:
Но тогда опять надо запускать после clearsetInterval().

а вопрос, (если я правильно его понял) был про процессорное время, тратится ли оно, я ответил что нет.
7. ytrewq123 - 28 Декабря, 2017 - 17:22:29 - перейти к сообщению
Строитель, вот я это почитав и пришёл сюда посоветоваться.
Если я оставляю setInterval(). И он живёт. И в зависимости от желания или срабатывает функция или ничего.
И это ожидание от setInterval() до setInterval() жрёт что-то???
То что в памяти ясно, но он тратит ресурс и может замедлять работу?
Или происходит как утверждает rgl.
8. Строитель - 28 Декабря, 2017 - 18:18:41 - перейти к сообщению
ytrewq123 пишет:
И это ожидание от setInterval() до setInterval() жрёт что-то???
То что в памяти ясно, но он тратит ресурс и может замедлять работу?
Ну "ресурс" же, это всего лишь некий идентификатор (ссылка), он не может много занимать памяти, и не должен замедлять работу.

Но между setTimeout() и setInterval() разница всё таки есть - почитайте о различиях принципов их работы на хабре: О том, как работают JavaScript таймеры
9. ytrewq123 - 28 Декабря, 2017 - 19:53:36 - перейти к сообщению
Спасибо Вам.
Я читал о разнице. Но в моём случае не так актуальна эта разница.
Ну тогда я смогу спокойно реализовать задуманное, хотя бы пока так.

 

Powered by ExBB FM 1.0 RC1