Самый очевидный вариант - взять Date.now() (или +new Date) и смотреть по кол-ву мс, сколько прошло времени
Как-то примерно так:
var last;
function testworking(n){
if(n == 1){
if(!last) testuser();
if(+new Date - last >= 10000){
testuser();
last = +new Date;
}
else { // если прошло меньше 10 секунд, то смотрим, сколько осталось, и ставим таймер
setTimeout(function(){
testuser();
last = +new Date;
}, +new Date - last);
}
}
else
testconfig();
}
setInterval(function(){testworking(n)}, 1000);
Не исключаю, что есть более простое решение (даже скорее всего есть), не исключаю, что мой код не будет работать верно)). Наверняка при сразу нескольких вызовах начнутся баги.
Но решение выглядит примерно так, да.