【发布时间】:2012-10-11 08:43:12
【问题描述】:
我已经搜索了如何将setTimeOut 与 for 循环一起使用,但是关于如何将其与 while 循环一起使用的内容并不多,而且我不明白为什么会有很大的不同。我已经编写了以下代码的一些变体,但是这个循环似乎会使浏览器崩溃:
while(src == '')
{
(function(){
setTimeout(function(){
src = $('#currentImage').val();
$("#img_"+imgIdx).attr('src',src);
}, 500);
});
}
为什么?
基本上我有一个动态创建的图像,它的源属性有时需要一些时间来加载,所以在我显示它之前,我需要继续检查它是否已加载,并且只有当它的路径在$('#currentImage') 中可用时,然后我显示它。
这段代码在我使用while循环之前运行良好,当我直接使用时
setTimeout(function(){
src = $('#currentImage').val();
$("#img_"+imgIdx).attr('src',src);
}, 3000);
但如果加载速度可能更快,我不想让用户等待 3 秒,因此我将 setTimeOut 放在了一个 while 循环中并缩短了它的间隔,所以我只检查加载每半秒路径一次。这有什么问题?
【问题讨论】:
-
否,settimeout 将函数作为参数,稍后执行。
-
@jrdn 我不是在说内部
setTimeout,我说的是外部。顺便说一句,实际上不需要函数声明。 -
啊。那也是。所以,是的,我的答案是错误的。这只是一个普通的旧无限循环!
-
错了一半。无论如何,他们应该为此使用 setInterval。
-
@AlvinWong 或者,因为它是一个图像,所以挂钩它的
.onload处理程序,该处理程序的设计目的是让您知道图像何时完成加载。
标签: javascript while-loop settimeout