js setInterval - 逐渐增加速度

时间:2014-04-11 06:12:09

标签: javascript setinterval

如何使setInterval逐渐增加速度,例如从1000毫秒开始,然后在几秒钟内逐渐减少到40毫秒,每次1毫秒。

有什么想法吗?

这是我的代码:

setTimeout(function() {bonustimer = setInterval(function() { handleTimer2(rushcount); }, 40);}, 1000);


handleTimer2 = function() {
if(rushcount === -1) {
clearInterval(bonustimer);      
} else {
$('.digit-wrapper').html(rushcount);
rushcount--;
}}

2 个答案:

答案 0 :(得分:1)

设置间隔可能不是你想要的,因为你最终会杀死它并在每次迭代时重做它。使用setTimeout更容易,可能是这样的:

(function () {
    var interval = 1001;
    timer = function() {
        --interval;
        //do your thing here

        if (interval >= 40) {
            setTimeout(timer, interval);
        }
    };
    timer();
})();

另请注意,如果您一次只将间隔减少一毫秒,从1000减少到40,则需要相当长的时间才能完成所有这些迭代。您可以随时使用其他公式替换--interval,例如interval = interval*0.9;(每次迭代减少10%)或任何您想要的公式。

答案 1 :(得分:0)

我猜@OldGeeksGuide的代码只是在 间隔 达到40时才停止。需要一点改进;)

from ffmpy import FFmpeg
ff = FFmpeg(inputs={'video.avi': None, 'voice.wav': None}, outputs={'output.ts': '-c:v h264 -c:a ac3'})
ff.cmd
'ffmpeg  -i voice.wave -i video.avi -c:v h264 -c:a ac3 output.ts'
ff.run()

然后您可能需要用一些 if 条件包装 setTimeout 来停止此循环;)