Помимо сохранения идентификатора тайм-аута, как упомянуто в других сообщениях, ваш function reloading
создается внутри function content
, и, поскольку вы не закрываете его, он недоступен для остальной части программы.
$(function content(){
function reloading(){
console.log('RELOADING');
}
reloading();
});
// Can't reach `content` or `reloading` from here
Вы должны сделать что-то вроде этого:
var reloading, content, reloadingTimeoutId, contentTimeoutId;
reloading = function () {
console.log('RELOADING');
$.ajax(
// CODE
success : function (data) {
// CODE
reloadingTimeoutId = setTimeout(reloading, 120000);
}
)
};
content = function () {
reloading();
};
$(document).jkey('a',function() {
// CODE
clearTimeout(contentTimeoutId);
contentTimeoutId = setTimeout(content,5000);
});
Трудно написать это лучше, не зная общую картину.При этом content
будет вызываться через 5 секунд, и до тех пор, пока reloading
будет успешным, он будет вызывать сам себя каждые 120 секунд.Обратите внимание, что reloading
никогда не очищается таким образом.