Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Можно ли узнать значение счетчика в setTimeout? (https://javascript.ru/forum/misc/61493-mozhno-li-uznat-znachenie-schetchika-v-settimeout.html)

yun 20.02.2016 19:08

Можно ли узнать значение счетчика в setTimeout?
 
Да, я знаю, что можно вместо setTimeout сделать setInterval(func(), 1000), где func будет вручную уменьшать на 1 глобальную переменную, которая будет работать счетчиком секунд, и вызывать нужное событие, когда он дойдет до 0. Но это как-то коряво и неудобно. Неужели нельзя достучаться до счетчика setTimeout через возвращенный им ID?
Если бы можно было его изменять (т.е. добавлять или уменьшать время), было бы вообще круто. Но хотя бы просто узнать текущее значение.

рони 20.02.2016 19:24

yun,
не фига не понял, можно ещё раз поподробнее ... и если нужна точность то лучше брать текущее время и время окончания и в этом промежутке равномерно уменьшать переменную и забыть про
Цитата:

Сообщение от yun
setInterval

навсегда ... или setTimeout или лучше requestAnimationFrame

Deff 20.02.2016 19:24

yun, Привязать к таймеру
var st1=+new Date(); setTimeout(function(){
   /*Тут что-то*/for(var i=0;i<10000000;i++){var a=i}

    /*когда нужно узнать время*/
    alert('1:'+(+new Date()-st1))
},2000);

for(var i=0;i<1000000;i++){var a=i}

/*узнать время вне setTimeout от запуска setTimeout*/
alert('2:'+(+new Date()-st1))


Цитата:

Сообщение от yun
Если бы можно было его изменять (т.е. добавлять или уменьшать время), было бы вообще круто.

Если время запуска еще не стартовало, проще удалить текущий счетчик clearTimeout и поставить новый с нужным отсчётом, а если стартовало, то поздно пить боржоми при любых Ваших хотелках


Часовой пояс GMT +3, время: 18:59.