【发布时间】:2013-06-20 22:55:57
【问题描述】:
我有一个函数animate_images 在我网站的一些页面上运行,它执行特定的动画。
我遇到的问题是,当用户再次导航到同一页面时,除了已经运行的实例之外,还会第二次调用该函数。
有没有办法做这样的事情:
if ! (animate_images) {
animate_images();
}
基本上,我想确保animate_images 永远不会运行超过一次,无论实际调用多少次。
【问题讨论】:
-
你可以尝试使用全局布尔值
-
当用户加载另一个页面或重新加载相同的页面时,该功能如何仍在运行?
-
您可以向 animate_images 添加一个
is_running属性,在animate_images()函数的开头将其设置为true,然后在清除间隔/超时时设置为false/动画停止。 -
我喜欢 Paulpro 的想法,但无论你做什么,请不要使用全局布尔值。一旦你开始走这条路,你的整个应用程序就会比你想象的更快地在全局状态下运行。
-
是的,如果你知道函数永远不会被多次实例化(不是用
new调用的),那么你可以使用函数对象的“静态”属性,如@987654329 @。我不记得了——从技术上讲,这可能使animate_images.is_running成为全局(或与is_running在同一范围内),而不是实际上是is_running的属性,但效果应该是相同的。如果您使用new实例化animate_images,那么您将使用this。 Javascriptthis中的 IIRC 范围为“最近”函数实例。
标签: javascript