JavaScript: отримати код для запуску щохвилини


76

Чи є спосіб зробити так, щоб якийсь код JS виконувався кожні 60 секунд? Я думаю, це може бути можливим за допомогою whileциклу, але чи є більш акуратне рішення? JQuery вітається, як завжди.



setInterval (вираз, час очікування); запускає код / ​​функцію з інтервалами, з тривалістю тайм-ауту між ними.
Джай

Відповіді:


145

Використання setInterval :

setInterval(function() {
    // your code goes here...
}, 60 * 1000); // 60 * 1000 milsec

Функція повертає ідентифікатор, за яким можна очистити інтервал за допомогою clearInterval :

var timerID = setInterval(function() {
    // your code goes here...
}, 60 * 1000); 

clearInterval(timerID); // The setInterval it cleared and doesn't run anymore.

Функція "сестра" - setTimeout / clearTimeout, шукайте їх.


Якщо ви хочете запустити функцію на сторінці init, а потім через 60 секунд через, 120 секунд після, ...:

function fn60sec() {
    // runs every 60 sec and runs on init.
}
fn60sec();
setInterval(fn60sec, 60*1000);

4
+1 за 60 * 1000, але також доцільно визначити функцію зовні, а не передавати анонімну функцію.
Аді

1
Питання, однак: якщо я це поставлю, чи буде код виконуватися при завантаженні сторінки, або це відбуватиметься через 60 секунд після завантаження?
Bluefire

2
@Bluefire запускається через 60 секунд після
запуску

12

Ви можете використати setIntervalдля цього.

<script type="text/javascript">
function myFunction () {
    console.log('Executed!');
}

var interval = setInterval(function () { myFunction(); }, 60000);
</script>

Вимкніть таймер, встановивши clearInterval(interval).

Дивіться цю скрипку: http://jsfiddle.net/p6NJt/2/

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.