Насколько я понимаю, вы хотите запустить тайм-аут, и если пользователь каким-то образом взаимодействует в течение этого времени, увеличьте его до 10 секунд.
Вы не можете изменить время ожидания, но можете остановить и перезапустите его с новой задержкой.
Если вы сохранили истекшее время с первого начала тайм-аута, вы можете рассчитать новую задержку, чтобы в сумме добавить до 10 секунд.
В мой пример, если вы нажмете start
один раз, он будет работать в течение 5 секунд. Если вы нажмете его еще раз в течение 5 секунд, он перезапустит тайм-аут с соответствующей задержкой, поэтому в целом он составит до 10 секунд
let timeout = null;
let timestamp = null;
$('#start').click(function() {
let time = 5000;
if (timestamp === null) {
// save the current timestap
timestamp = +new Date;
} else {
// subtract the elapsed time since `timestamp` from the desired 10 seconds and restart the timer
time = 10000 - ((+new Date) - timestamp);
timestamp = null;
$('#start').prop('disabled', true);
}
out(`timeout started with ${time} ms`);
clearTimeout(timeout);
timeout = setTimeout(function() {
timestamp = null;
out('done');
$('#start').prop('disabled', false);
}, time);
});
function out(text) {
$('#output').append(text + '<br/>');
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<button id="start">start timeout</button><br/>
<div id="output"></div>