Простой вопрос здесь, что я, может казаться, не нахожу ответ для: Однажды a setTimeout
установлен, там какой-либо способ видеть, установлен ли он все еще, ну, в общем?
if (!Timer)
{
Timer = setTimeout(DoThis,60000);
}
Из того, что я могу сказать, когда Вы clearTimeout
, переменная остается в ее последнем значении. A console.log
Я просто посмотрел на шоу Timer
как являющийся '12', неважно, если тайм-аут был установлен или очищен. Я должен аннулировать переменную также или использовать некоторую другую переменную в качестве булева высказывания, да, я установил этот таймер? Конечно, существует способ просто проверить, чтобы видеть, работает ли тайм-аут все еще... правильно? Я не должен знать, сколько времени оставлен, просто если это все еще работает.
Нет никакой потребности проверить на существующий таймер, просто выполниться clearTimeout
прежде, чем запустить таймер.
var timer;
//..
var startTimer = function() {
clearTimeout(timer);
timer = setTimeout(DoThis, 6000);
}
Это очистит любой таймер прежде, чем запустить новый экземпляр.
я знаю, что это - некрорегистрация, но я думаю все еще, что люди ищут это.
Это - то, что я использую: 3 переменные:
t
для миллисекунд с тех пор.. в Объекте Даты для следующей цели timerSys
для фактического интервала seconds
порог для миллисекунд был установлен следующий, я имею function timer
с 1 переменной функциональные проверки, если переменная действительно , раз так он проверяет, работает ли таймер уже и если это верно, чем заливки глобальный Вар , если не действительно , ложно , очищает интервал и устанавливает global var timerSys
на [1 138] ложь ;
var t, timerSys, seconds;
function timer(s) {
if (s && typeof s === "number") {
if (typeof timerSys === "boolean" || typeof timerSys === "undefined") {
timerSys = setInterval(function() {
sys();
}, s);
t = new Date().setMilliseconds(s);
seconds = s;
}
} else {
clearInterval(timerSys);
timerSys = false;
}
return ((!timerSys) ? "0" : t)
}
function sys() {
t = new Date().setMilliseconds(seconds);
}
пример I
Теперь можно добавить строку к [1 120] функция sys :
function sys() {
t = new Date().setMilliseconds(seconds);
console.log("Next execution: " + new Date(t));
//this is also the place where you put functions & code needed to happen when interval is triggerd
}
И выполнитесь:
timer(5000);
Каждые 5 секунд в консоли:
//output:: Next execution: Sun May 08 2016 11:01:05 GMT+0200 (Romance (zomertijd))
пример II
function sys() {
t = new Date().setMilliseconds(seconds);
console.log("Next execution: " + seconds/1000 + " seconds");
}
$(function() {
timer(5000);
});
Каждые 5 секунд в консоли:
//output:: Next execution: 5 seconds
Примечание в качестве примера III
var t, timerSys, seconds;
function timer(s) {
if (s && typeof s === "number") {
if (typeof timerSys === "boolean" || typeof timerSys === "undefined") {
timerSys = setInterval(function() {
sys();
}, s);
t = new Date().setMilliseconds(s);
seconds = s;
}
} else {
clearInterval(timerSys);
timerSys = false;
}
return ((!timerSys) ? "0" : t)
}
function sys() {
t = new Date().setMilliseconds(seconds);
console.log("Next execution: " + seconds / 1000 + " seconds");
}
$(function() {
timer(5000);
$("button").on("click", function() {
$("span").text(t - new Date());
})
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<button>Freebeer</button>
<span></span>
таким образом можно понизиться 0
Я обычно аннулирую таймер:
var alarm = setTimeout(wakeUpOneHourLater, 3600000);
function wakeUpOneHourLater() {
alarm = null; //stop alarm after sleeping for exactly one hour
}
//...
if (!alarm) {
console.log('Oops, waked up too early...Zzz...');
}
else {
console.log('Slept for at least one hour!');
}