如何创建永久动画而不冻结?

时间:2013-10-25 20:03:04

标签: javascript animation while-loop conditional infinite-loop

我仍然是Javascript的新手。我尝试编写一个程序来一直使图像fadeToggle,所以我使用while条件语句(结合常量变量);在运行并冻结我的计算机之后(然后记住病毒基本上是无限的操作)我在这里搜索了一下,意识到我应该可能确实从不使用无限循环。

(实际上我想要微光 - 意味着从不透明度0.9到0.6到0.9等......)所以它与fadeToggle不一样,但同样的问题仍然存在;如何让它无限进行?(无需编写恶意代码。)

这是我写的,供您参考:

<script>
$(document).ready(function(){
var always10 = 10;
while (always10 == 10) {
    $('.pimg').fadeToggle(2600);
                   }
});
</script>

另外,我发现另一个线程while(true)更适合无限循环。所以另一个问题是:无限循环有时好吗?

2 个答案:

答案 0 :(得分:0)

只需使用jQuery动画提供的回调,例如.fadeToggle

function fadeToggleForever ($e) {
    $e.fadeToggle({
        duration: 2600,
        // start another fadeToggle when this one completes
        complete: function () { fadeToggleForever($e) }
    });
}

// main code
fadeToggleForever($('.pimg'));

使用完整回调的工作原理是因为jQuery动画在内部使用setTimeout(或者可能是setInterval)并因此“产生”代码执行,以便浏览器可以继续响应用户输入并更新显示

答案 1 :(得分:0)

由于Javascript是异步的,因此没有sleep方法。但相反,一个好主意是使用setIntervalsetTimeout

如果没有这些功能,你的循环将尽可能地占用大部分资源,并且可能导致冻结(取决于你的浏览器)。