На данный вопрос уже ответили:
Установил почтовый клиент rainlooop
js раз в определенное количество времени шлет запрос на php скрипт, который уже связывается c моим аккаунтом и получается список писем. Хочу изменить интервал проверки писем. если увидеть отправляемые запросы из консоли я могу то вот как увидеть какие таймеры стоят и в каких функциях, не понимаю
Как вариант переопределить стандартный setInterval в самом начале загрузки страницы и собрать все таймеры, соответствующие функции и интервалы в массив объектов.
После полной загрузки страницы у вас будет массив объектов с полной информацией от таймерах. Затем у вас появится отличная возможность управлять таймерами так как вам необходимо "динамически"
!
window.originalSetInterval = window.setInterval;
let activeTimers = [];
//Переопределение стандартного setInterval
window.setInterval = function(callback, interval) {
const handler = window.originalSetInterval(callback, interval);
activeTimers.push({
handler: handler,
callback: callback,
interval: interval
});
return handler;
};
window.getActiveTimers = () => {
return activeTimers.slice();
};
setInterval(() => {
console.log('#1')
}, 5000);
console.log(getActiveTimers());
setInterval(() => {
console.log('#2')
}, 5000);
console.log(getActiveTimers());
//Ждем полной загрузки всех ресурсов
window.addEventListener('load', () => {
//Сбрасываем переоределение стандартного setInterval
window.setInterval = window.originalSetInterval;
console.log('Все ресурсы загружены!');
//Удалить все таймеры (setInterval) по "ID"
activeTimers.map(elem => clearInterval(elem.handler));
console.log('Все таймеры удалены!');
//Но массив объектов у нас все еще есть
console.log(getActiveTimers());
//Инициализируем таймеры снова но уже из массив объектов
activeTimers.map(elem => setInterval(elem.callback, elem.interval));
//То есть вы можете управлять таймерами динамически
//Допустим я знаю что 2 таймер обновляется слишком быстро 5000мс
//А мне надо больше 10000мс (или меньше)
activeTimers.map(elem => {
if (elem.handler == 2) {
console.log('Второй таймер обновлен:');
clearInterval(elem.handler);
elem.interval = 10000;
setInterval(elem.callback, elem.interval);
}
});
console.log(getActiveTimers());
}, false);
Если есть вопросы могу дополнить ответ.
var oldSetInterval = window.setInterval;
window.setInterval = function(){
var f = arguments[0];
arguments[0] = function() {
console.log("my interval wrapper:", f.toString(), JSON.stringify(arguments));
f.apply(this, arguments);
};
oldSetInterval.apply(this, arguments);
};
setInterval(function(a, b){
console.log("real interval", a + b)
}, 1000, 23, 100);
Отследить уже запущенные интервалы - нельзя. Но если вставить/выполнить этот код до всех других скриптов на странице, все интервалы будут вызываться через эту обертку. Думаю, это можно сделать через js расширение для браузера.
Виртуальный выделенный сервер (VDS) становится отличным выбором
Вот есть текст
Друзья, добрый день
Помогите правильно организовать программу, нужно написать todo консольную желательноУ нее должны быть поля