В настоящее время у меня появляется модал, и я хочу, чтобы он исчез, если пользователь не вводит свой пароль в течение 30 секунд.
Это работает, но когда я попытался реализовать его с событием onChange
на входе , он перестал работать. Странная часть, когда я использую console.log
, чтобы проверить это, это работает. Как только я уберу эти console.log
, это не сработает. Просто любопытно, видел ли кто-нибудь это раньше?
let TIMEOUT = null;
const setModalTimeout = randomFunction => {
if (TIMEOUT === null) {
// console.log('NOTE: set timeout before', TIMEOUT, new Date().toLocaleTimeString());
TIMEOUT = setTimeout(() => randomFunction(false), MODAL_TIMEOUT);
}
// console.log('NOTE: set timeout after', TIMEOUT, new Date().toLocaleTimeString());
};
const clearModalTimeout = (done) => {
if (TIMEOUT !== null) {
// console.log('NOTE: clear timeout before', TIMEOUT, new Date().toLocaleTimeString());
clearTimeout(TIMEOUT);
TIMEOUT = null;
}
// console.log('NOTE: clear timeout after', TIMEOUT, new Date().toLocaleTimeString());
done && done();
};
const resetModalTimeout = (randomFunction) => {
// console.log('NOTE: reset timeout', TIMEOUT, new Date().toLocaleTimeString());
clearModalTimeout();
setModalTimeout(randomFunction);
}
Выше логика, ниже тег ввода.
<input type="password" placeholder="pin/password" id="password" oncreate={element => element.focus()} onchange={() => resetModalTimeout(randomFunction)} />
Основная часть этой проблемы: если я раскомментирую console.log
s, она отлично работает. То, как код отображается сейчас, не работает. Он будет проходить только через цикл First (так что работайте только в течение 30 секунд, даже если я изменю вход). и когда я регистрируюсь, это ясно показывает, что изменения проходят. Есть идеи? Конечно, я не хочу console.log
в основном коде, также я использую hyperapp (существующая база кода).
При ведении журнала я вижу, что значение TIMEOUT
меняется, как и ожидалось.