PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


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

> Без описания
ytrewq123
Отправлено: 28 Декабря, 2017 - 12:21:08
Post Id


Посетитель


Покинул форум
Сообщений всего: 337
Дата рег-ции: Окт. 2014  


Помог: 0 раз(а)




Здравствуйте!
У меня вот такой вопрос.
У меня стоит setInterval(). Например через 3 минуты. Но мне надо чтобы он сработал выполнилась функция, и при определённых условиях я не хочу срабатывания функции. То есть, в функции сразу ретурн.
И вопрос. Когда setInterval ждёт эти 3 минуты. Он тратит ресурс, что-то считает, ибо как-то же он должен знать что прошло именно 3 минуты?
Если да и это много, может тогда всё же использовать clearsetInterval().
Но тогда опять надо запускать после clearsetInterval().
Главный вопрос как много setInterval() тратит на свою работу.
 
 Top
rgl
Отправлено: 28 Декабря, 2017 - 12:27:56
Post Id



Новичок


Покинул форум
Сообщений всего: 49
Дата рег-ции: Авг. 2017  
Откуда: замкадье


Помог: 1 раз(а)




Вопрос по JavaScript?
Ничего setInterval в данном случе на работу не тратит...
 
 Top
ytrewq123
Отправлено: 28 Декабря, 2017 - 12:35:47
Post Id


Посетитель


Покинул форум
Сообщений всего: 337
Дата рег-ции: Окт. 2014  


Помог: 0 раз(а)




Спасибо.
Да JavaScript, ничего???
А как он узнаёт что пришло время сработать.
 
 Top
rgl
Отправлено: 28 Декабря, 2017 - 14:28:18
Post Id



Новичок


Покинул форум
Сообщений всего: 49
Дата рег-ции: Авг. 2017  
Откуда: замкадье


Помог: 1 раз(а)




ytrewq123 пишет:
А как он узнаёт что пришло время сработать.

Это уже зависит от конкретной реализации. Ну напр. если браузер для Windows написан на C/C++, вызовет какую-нибудь функцию операционки, (типа Sleep(), WaitForSingleObject() ) и операционка его "разбудит" когда время наступит. Это всего лишь предположение, один из возможных вариантов...
 
 Top
Строитель Модератор
Отправлено: 28 Декабря, 2017 - 15:02:56
Post Id



Участник


Покинул форум
Сообщений всего: 1314
Дата рег-ции: Февр. 2014  
Откуда: Украина


Помог: 54 раз(а)




ytrewq123 пишет:
Здравствуйте!
У меня вот такой вопрос.
У меня стоит setInterval(). Например через 3 минуты. Но мне надо чтобы он сработал выполнилась функция, и при определённых условиях я не хочу срабатывания функции. То есть, в функции сразу ретурн.
И вопрос. Когда setInterval ждёт эти 3 минуты. Он тратит ресурс, что-то считает, ибо как-то же он должен знать что прошло именно 3 минуты?
Если да и это много, может тогда всё же использовать clearsetInterval().
Но тогда опять надо запускать после clearsetInterval().
Главный вопрос как много setInterval() тратит на свою работу.


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

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

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



Новичок


Покинул форум
Сообщений всего: 49
Дата рег-ции: Авг. 2017  
Откуда: замкадье


Помог: 1 раз(а)




Строитель пишет:
Сборщик мусора в JavaScript не чистит функции, назначенные в таймерах, пока таймеры актуальны.

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

а вопрос, (если я правильно его понял) был про процессорное время, тратится ли оно, я ответил что нет.
 
 Top
ytrewq123
Отправлено: 28 Декабря, 2017 - 17:22:29
Post Id


Посетитель


Покинул форум
Сообщений всего: 337
Дата рег-ции: Окт. 2014  


Помог: 0 раз(а)




Строитель, вот я это почитав и пришёл сюда посоветоваться.
Если я оставляю setInterval(). И он живёт. И в зависимости от желания или срабатывает функция или ничего.
И это ожидание от setInterval() до setInterval() жрёт что-то???
То что в памяти ясно, но он тратит ресурс и может замедлять работу?
Или происходит как утверждает rgl.

(Отредактировано автором: 28 Декабря, 2017 - 17:24:06)

 
 Top
Строитель Модератор
Отправлено: 28 Декабря, 2017 - 18:18:41
Post Id



Участник


Покинул форум
Сообщений всего: 1314
Дата рег-ции: Февр. 2014  
Откуда: Украина


Помог: 54 раз(а)




ytrewq123 пишет:
И это ожидание от setInterval() до setInterval() жрёт что-то???
То что в памяти ясно, но он тратит ресурс и может замедлять работу?
Ну "ресурс" же, это всего лишь некий идентификатор (ссылка), он не может много занимать памяти, и не должен замедлять работу.

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


Посетитель


Покинул форум
Сообщений всего: 337
Дата рег-ции: Окт. 2014  


Помог: 0 раз(а)




Спасибо Вам.
Я читал о разнице. Но в моём случае не так актуальна эта разница.
Ну тогда я смогу спокойно реализовать задуманное, хотя бы пока так.
 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 1 (гостей: 1, зарегистрированных: 0)
« Вопросы новичков »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB