Останавливается ли функция setTimeout JavaScript при перезагрузке страницы? - PullRequest
2 голосов
/ 08 марта 2012

Если я инициирую функцию setTimeout из триггера, остановится ли функция после перезагрузки страницы?

Я запускаю функцию setTimeout «period_update ()» для события onload моей страницы.

Создает ли это несколько экземпляров процесса period_update ()?

<body onload="init_page_onload()">

function init_page_onload() {
    periodic_update();      
}

function periodic_update() {  
        foo()

    setTimeout("periodic_update()", PERIODIC_UPDATE_REPEAT_PERIOD_MS )
}

Ответы [ 3 ]

4 голосов
/ 08 марта 2012

Когда страница перезагружается, «предыдущий» таймер сбрасывается, и запускается новый.

3 голосов
/ 08 марта 2012

В браузере весь код JavaScript прерывается, когда вы покидаете страницу, и запускается при открытии страницы.Поэтому при перезагрузке страницы тайм-ауты будут сброшены и установлены снова.

Если вы хотите сохранить тайм-аут, вы можете:

  • использовать родительский фрейм, который не перезагружается
  • используйте localStorage (что позволяет сохранять данные на компьютере клиента), чтобы отслеживать, когда функция была вызвана в последний раз, и соответствующим образом установить время ожидания при загрузке
0 голосов
/ 08 марта 2012

При перезагрузке браузера html, css и javascript повторно оцениваются как часть построения DOM и рендеринга деревьев Следовательно, каждый экземпляр функции таймера располагается при перезагрузке страницы. Так что нет, у вас не будет нескольких экземпляров этой функции.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...