setTimeout(func, 5000) запускает func спустя 5 секунд, если за это время еще раз десять вызвать setTimeout, то все эти события будут выполняться по очереди с разницей в пять секунд.
Как сделать во первых так, что бы очереди небыло, а во вторых, что бы сначала выполнялся func, а потом уже устанавливался таймаут.