#javascript
Вопрос:
Вопрос: Как обновлять элемент каждые 10 секунд, т. Е., как в 12:30:10, 12:31:10, и т. д
Следующее технически работает и делает то, что мне нужно, но как я должен это сделать правильно? То есть оптимально с точки зрения кода и времени выполнения?
setInterval(function(){
var now = new Date();
if (now.getSeconds() == 10) {
$('#jama').load('jama.php');
}
},1000);
Комментарии:
1. Насколько точно вам это нужно? Почему каждую 10-ю секунду? Вы можете получить текущие секунды (например, 48), установить таймер на следующую 10 — ю секунду (70-48 = 22), а затем запустить минутный таймер, который вызовет функцию загрузки.
Ответ №1:
Проблема: я думаю, что вы просите: проверять каждую десятую секунду, т. Е. 12:30:10-это десятая секунда, но проверять каждые десять секунд (12:30:13, 12:30:23, и т.д.) не является.
Решение: В этом случае используйте setTimeout()
, запуская его каждую секунду , чтобы найти десятую секунду, и когда вы найдете десятую секунду, тогда точно setInterval()
так же, как вы делаете сейчас.
Преимущество: В чем преимущество? Как только вы найдете десятую секунду, вы можете изменить setInterval()
задержку с 1000
на 60000
, так как мы знаем, что следующая десятая секунда будет через 60 секунд. Это уменьшает частоту проверки кода, а также удаляет now()
объект и ненужную проверку.
Код: Рабочая демонстрация ниже.
var myinterval = false;
function findTenthSecond() {
if(!myinterval) {
findTenthSecond_async();
}
}
function findTenthSecond_async() {
setTimeout(function(){
var now = new Date();
console.log("Check second: " now.getSeconds() "|");
if (now.getSeconds() == 10) {
myinterval = true;
// your code is here
setInterval(function(){
console.log ("Load jama.php");
$('#jama').load('jama.php');
},60000); // updated the second count to 60 seconds
} else {
findTenthSecond();
}
}, 1000);
}
findTenthSecond();
Комментарии:
1. сначала извините за неправильную формулировку моего вопроса, а затем большое спасибо за ответ. Это было именно то, что я искал, а также вы упомянули именно те вещи, из-за которых мое решение казалось неуклюжим
2. @StonieMalony Спасибо! Нет проблем, не стесняйтесь отмечать этот ответ как «правильный» (галочка), если он помог, чтобы он мог помочь другим.