我已经搜索了如何将 setTimeOut
与 for 循环一起使用,但是关于如何将它与 while 循环一起使用的内容并不多,而且我不明白为什么应该有很多无论如何区别。我已经编写了以下代码的一些变体,但这个循环似乎会使浏览器崩溃:
while(src == '')
{
(function(){
setTimeout(function(){
src = $('#currentImage').val();
$("#img_"+imgIdx).attr('src',src);
}, 500);
});
}
为什么?
基本上我有一个动态创建的图像,其 source 属性有时需要时间来加载,所以在我可以显示它之前,我需要继续检查它是否已加载,并且只有当它的路径在 $ 中可用时('#currentImage')
,然后显示它。
这段代码在我使用 while 循环之前和直接使用时都运行良好
setTimeout(function(){
src = $('#currentImage').val();
$("#img_"+imgIdx).attr('src',src);
}, 3000);
但我不想让用户等待 3 秒,如果加载可能完成得更快,因此我将 setTimeOut
放在 while 循环中并缩短它的间隔,这样我仅每半秒检查一次加载的路径。这有什么问题吗?
最佳答案
while 循环正在制造麻烦,就像 jrdn 指出的那样。也许您可以将 setInterval 和 setTimeout 结合起来,一旦 src 被填满,就清除间隔。我在此处放置了一些示例代码以提供帮助,但不确定它是否完全符合您的目标:
var src = '';
var intervalId = window.setInterval(
function () {
if (src == '') {
setTimeout(function () {
//src = $('#currentImage').val();
//$("#img_" + imgIdx).attr('src', src);
src = 'filled';
console.log('Changing source...');
clearInterval(intervalId);
}, 500);
}
console.log('on interval...');
}, 100);
console.log('stopped checking.');
希望这对您有所帮助。
关于javascript - while 循环中的 setTimeout,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12996193/