Javascript的完成性质

时间:2011-08-07 17:41:00

标签: javascript javascript-events

Javascript是否打算在网站/ webapp上尽可能少地运行?我的意思是通常意图在页面加载后立即运行所有js文件并将它们放在一边,然后当函数立即执行它们并完成它时?

我正在使用谷歌地图制作一个项目,我有一个脚本化的自定义标记对象,调试器告诉我浏览器在页面上出现任何内容之前运行我的所有js文件。

我的问题出现在这里:我想通过jQuery(类似于Dock中的OS X图标)来动画某些标记来连续反弹,而我在无限循环函数中的几次尝试都只是让浏览器崩溃。所以我理解浏览器不喜欢这样,但有没有办法在用户导航页面时让一个简单的脚本在后台重复?或者Javascript不应该是用这种方式?

(我在Flash工作了很长时间,所以我的心态仍然存在。)

5 个答案:

答案 0 :(得分:3)

是的,Javascript函数应该尽力而为,并尽快退出。 GUI和脚本在同一个线程上运行,因此只要您在Javascript函数中,浏览器中就不会显示任何内容。如果您尝试使用无限循环,浏览器将显示为冻结。

使用window.setIntervalwindow.setTimeout方法触发在特定时间运行的代码。通过运行每秒更新几次的间隔,您可以创建动画。

答案 1 :(得分:2)

您必须设置计时器以在定义的时间后执行脚本。

var timer = setTimeout(code, milliseconds);

将在某某毫秒内执行code。每次执行脚本都可以设置一个新的计时器来再次执行脚本。

您可以使用clearTimeout(timer)取消定时活动。

答案 2 :(得分:1)

使用setTimeout()setInterval()。关于它的MDC文章相当不错。

你需要在快速运行的函数内部进行更新,但需要多次调用,而不是在循环内部进行更新。

答案 3 :(得分:1)

既然你说你正在使用jQuery,考虑使用它的effects API(例如jQuery.animate()),它会让你的生活更轻松!

答案 4 :(得分:0)

就个人而言,我在页面加载后尽可能多地保存代码,部分方法是将所有<script>放在<body>的底部。这意味着(感知的)页面加载时间的减少,同时让我的所有JS准备好在需要时运行。

我不建议您阅读文档开头所需的所有内容。相反,将事物绑定到事件,例如按钮的点击等。