Javascript睡眠..setInterval javascript中的setTimeout

Javascript sleep ....setTimeout from within setInterval javascript

本文关键字:中的 setTimeout javascript setInterval 睡眠 Javascript      更新时间:2023-09-26

setTimeout是否在setInterval内部工作?

我正在为一个奇怪的艺术项目编写一些JavaScript来动画化一些DOM元素。对我来说,解释我的问题的最好方法是举一个例子:

我有50个不同的div,我需要通过使用setInterval改变它们在屏幕上的位置来设置动画。我需要每个div以不同的速率移动。

我计划使用的解决方案是在较大的changePosition函数中设置一个sleep函数,这样我就可以为每个div传递不同的sleep值。这样,我就可以通过字典为每个div分配唯一的移动速率。

我遇到的问题是JavaScript没有"睡眠"。它只有setTimeout,在我的setInterval循环中似乎不起作用。

setTimeout()setInterval()内部完美工作,但由于您正在尝试模仿javascript没有的sleep(),因此在我看来,当setTimeout()异步工作时,您似乎正在尝试编写同步代码。您需要重新思考如何编写代码才能做到这一点。

发布您的一些代码,我们可以提供更具体的帮助。

我不完全确定我是否遵循了你想要做的,但通过为每个对象使用单独的计时器,以不同的速率为N个不同的事物设置动画可能是最简单的。然后,每个对象的计时器都可以按照自己的速率设置,并检测自己的完成情况,而不必通过某个中央计时器来管理它们。

此外,如果你用javascript从头开始编写动画例程,你需要做的工作要多得多。这个问题已经解决了数千次,你没有理由再自己发明它。一个简单的谷歌搜索"javascript动画示例"将显示各种各样的示例和大量代码,您可以根据这些示例和代码进行搜索。这里有一个很好的教程:http://javascript.info/tutorial/animation.

像jQuery这样的流行库有各种内置的动画函数,这些函数也为您做了很多脏活。动画也可以在现代浏览器(IE除外)中使用CSS3来完成。

也许您正在寻找jQuery delay()函数?http://api.jquery.com/delay/

这里:我可以在jQuery中将.delay()与.animate()一起使用吗?您可以看到delay()和animate()函数是如何协同工作的。