Javascript 如何在不冻结的情况下创建永久动画?
我还是Javascript的新手。我尝试编写一个程序,使图像始终处于淡入淡出状态,因此我使用while条件语句(结合常量变量);在运行它并冻结我的计算机(然后记住病毒基本上是无限操作)之后,我在这里搜索了一下,意识到我应该,实际上,永远不要使用无限循环 (事实上,我想要微光——意思是从不透明度0.9到0.6到0.9等等)所以它和fadeToggle不一样,但同样的问题仍然存在;如何使其无限运行?(不编写恶意代码) 这是我写的,供大家参考:Javascript 如何在不冻结的情况下创建永久动画?,javascript,animation,while-loop,conditional,infinite-loop,Javascript,Animation,While Loop,Conditional,Infinite Loop,我还是Javascript的新手。我尝试编写一个程序,使图像始终处于淡入淡出状态,因此我使用while条件语句(结合常量变量);在运行它并冻结我的计算机(然后记住病毒基本上是无限操作)之后,我在这里搜索了一下,意识到我应该,实际上,永远不要使用无限循环 (事实上,我想要微光——意思是从不透明度0.9到0.6到0.9等等)所以它和fadeToggle不一样,但同样的问题仍然存在;如何使其无限运行?(不编写恶意代码) 这是我写的,供大家参考: <script> $(document).r
<script>
$(document).ready(function(){
var always10 = 10;
while (always10 == 10) {
$('.pimg').fadeToggle(2600);
}
});
</script>
$(文档).ready(函数(){
var始终为10;
而(始终10==10){
美元(“.pimg”).fadeToggle(2600);
}
});
另外,我在另一个线程中发现,
while(true)
更适合无限循环。所以另一个问题是:无限循环有时可以吗?只需使用jQuery动画已经提供的回调,如:
使用完整回调的好处是,jQuery动画在内部使用
setTimeout
(或者setInterval
),从而“产生”代码执行,以便浏览器可以继续对用户输入做出反应并更新显示。由于Javascript是异步的,因此没有睡眠方法。但是,一个好主意是使用或
如果没有这些功能,您的循环将尽可能多地占用资源,并可能导致冻结(取决于您的浏览器)。在Javascript中,有限循环几乎永远都不正常。它是单线程的,因此您永远无法与文档交互。使用setInterval()
在后台定期运行函数。Asynchornous and sleep mode=在我脑海中闪现(我不会说其他编程语言,所以:-P),但是setInterval和setTimeout解决了我的问题。就像另一张海报一样,我想写我自己的,所以我没有使用jquery。谢谢大家!
function fadeToggleForever ($e) {
$e.fadeToggle({
duration: 2600,
// start another fadeToggle when this one completes
complete: function () { fadeToggleForever($e) }
});
}
// main code
fadeToggleForever($('.pimg'));