2015-09-08 2 views
0

Итак, я работаю на таймер, и это мой код прямо сейчас:Повторяя функцию с интервалом в 1 секунду определенное число раз

function sleep(milliseconds) { 
    var start = new Date().getTime(); 
    for (var i = 0; i < 1e7; i++) { 
    if ((new Date().getTime() - start) > milliseconds) { 
     break; 
    } 
    } 
} 

function timerCreate() { 
    for (i = 0; i < 10; i++) { 
    sleep(1000); 
    minusOneSec(); 
    } 
} 

Все, что я хотел сделать, что в десять раз, каждую секунду выполнялась функция minusOneSec(). (Я взял код функции sleep() из ответа, который я видел в StackOverflow некоторое время назад, и я не помню, кто придумал его, поэтому, если вы знаете, скажите мне, чтобы я мог их отблагодарить.) Это работает, но теперь я пришел к выводу, что эта функция сна остановит весь скрипт java на странице во время ее работы. Это правда? То, что я также попытался было это:

function timerCreate() { 
    for (i = 0; i < 10; i++) { 
    setInterval(minusOneSec, 1000); 
    } 
} 

но то, что он сделал, чтобы запустить функцию minusOneSec() 10 раз подряд, затем подождите одну секунду, то функция 10 раз подряд, и так далее. Есть ли способ сделать то, что я намеревался, но разрешить запуск другого JavaScript-кода одновременно? При необходимости я могу использовать jQuery.

ответ

2

Вы должны позвонить setInterval() только один раз (вместо того, чтобы в цикле) и проверить счетчик внутри. setInterval() будет продолжать выполнять переданную функцию, пока мы не очистим интервал.

var i = 0, 
    interval = setInterval(function() { 
     minusOneSec(); 
     i++; 
     if(i >= 10) clearInterval(interval); // stop it 
    }, 1000); 
+0

Это работает! Благодаря :-) –

Смежные вопросы