Попытка вызвать функцию каждые 3 минуты с помощью JavaScript

У меня есть функция, которая возвращает целое число (текущая оценка репутации пользователя на сайте сообщества). Это число часто увеличивается или уменьшается в зависимости от того, как проголосовали за их комментарии и материалы. Я хотел бы «опрашивать» его каждые 30 секунд или около того, чтобы узнать, изменился ли он, и если да, обновить номер, который я показываю.

В другом потоке StackOverflow я нашел этот фрагмент JavaScript, который выглядел полезным:

function listen() {
  $.get("/mylongrequestfile", {}, function(data) {
     $("#mydiv").html(data);
     listen(); // then launch again
  }));
};

Мне просто заменить /mylongrequestfile моей функцией? Я пытаюсь это сделать, но это не работает так хорошо. Как мне использовать этот код или какой-то другой фрагмент, чтобы получать и отображать это значение каждые 30 секунд?


person bflora2    schedule 29.09.2009    source источник


Ответы (1)


Вы можете использовать

window.setInterval

который

Повторно вызывает функцию с фиксированной задержкой по времени между каждым вызовом этой функции.

var intervalID = window.setInterval(yourfunctionname, 300);

Это выполняется с задержкой в ​​300 миллисекунд.

Аргументы обратного вызова

setInterval() передаст в функцию обратного вызова количество миллисекунд после вызова обратного вызова, что может запутать ее, если она ожидает что-то еще в качестве аргумента. Чтобы обойти эту проблему, используйте анонимную функцию для обратного вызова.

Тот же метод можно использовать, если вам нужно передать аргумент вашей функции обратного вызова, но вам нужно, чтобы она работала в Internet Explorer, который не поддерживает отправку дополнительных параметров с помощью setInterval().

var intervalID = setInterval(function() { YourFunction(); }, 300);
person rahul    schedule 29.09.2009
comment
Что мне делать с варом впереди? Прямо сейчас я использую ‹?php print myfunction(); ?> Похоже, я мог бы использовать ‹?php $intervalID = setInterval(function() { myfunction(); }, 300); напечатать $intervalID; ?› Это сработает? - person bflora2; 29.09.2009
comment
var используется для объявления переменных в javascript. - person rahul; 29.09.2009
comment
Чтобы никто не полагался на него, стоит упомянуть, что параметр задержки поддерживается только в Mozilla (на самом деле он остался от браузеров Netscape 1990-х годов), а также имеет тенденцию иметь значения, которые со временем отдаляются от реальности. См. bugzilla.mozilla.org/show_bug.cgi?id=512259, где Брендан Эйх говорит, что пришло время избавиться от него, и bugzilla.mozilla.org/show_bug.cgi ?id=394769, где это обсуждается более подробно и упоминается потенциальная неточность значения. Главное, не используйте его :-) - person NickFitz; 29.09.2009