Если вы хотите делать это периодически, вы должны использовать setInterval
.
//create the timer (and save the unique id returned
//so we can stop it later if needed, using clearTimer())
//This will fire every 300,000 millisecs (= 5 mins)
//and call the updateMessageCount function
var msgCounTimer = setInterval(updateMessageCount, 300000);
function updateMessageCount() {
$.ajax({
type:'GET',
url:'http://foobar.com/ws',
success:function(messageCount)
{
$('a.message').text(messageCount + ' Messages');
}
});
}
Если, однако, вы хотите сделать это один раз, используйте setTimeout
- вы можете периодически делать это и с setTimeout
, за исключением того, что вам нужно будет каждый раз звонить для установки таймера.
Единственный случай, когда я могу подумать о том, где вы, возможно, захотите использовать setTimeout
вместо setInterval
, будет, когда работа, которую вы выполняете в функции, вызываемой по таймауту (updateMessageCount
в моем примере ниже), занимает длиннее , чем интервал тайм-аута, из-за которого следующий тайм-аут (при использовании setInterval
) будет казаться мгновенным, поскольку таймер будет срабатывать каждые n
секунд независимо от того, была ли вызвана функция предыдущим тайм-аут все еще выполняется. Если вместо этого вы хотите убедиться, что между последовательными вызовами вашего обработчика тайм-аута будет n
миллисекунд (в отличие от того, как ваш обработчик тайм-аута вызывается каждые n
миллисекунд), вы должны вместо этого использовать setTimeout
и настроить его каждый раз, когда вы заканчиваете свою тяжелую обработку.
Примечание
Я вижу, что вы используете абсолютный URL в примере, поэтому я подумал, что я укажу на это, если вы не знакомы с ним - следите за политикой того же происхождения , которая ограничивает ваш JavaScript от делать запросы к доменам, отличным от того, из которого он исходит.