Я создал систему опроса, для которой вы должны использовать инстанцирование, что позволяет вам запускать несколько опросов одновременно.
Опрос использует setTimeout для задержки каждого запроса в соответствии с определенной частотой опроса.
Вот очень упрощенная версия:
function Poller(url, rate, callback) {
var timeoutReference = null;
var public = {
poll: function() {
/* Request here i.e. $.GET(....)
calling callback with recieved data on success */
console.log("Poller running");
timeoutReference = setTimeout(public.poll, rate);
},
stop: function() {
clearTimeout(timeoutReference);
}
}
return public;
}
var poller1 = new Poller('http://www.site.com/feed', 5000, readData);
poller1.poll();
Теперь, если я сделаю
poller1 = null;
Тайм-аут все еще работает и будет работать вечно. Мне нужно сделать
poller1.stop();
poller1 = null;
чтобы он работал как положено.
Есть ли способ очистить тайм-аут, когда все ссылки потеряны, что исключает необходимость вызова poller1.stop (); прежде чем ссылаться на экземпляр?