【发布时间】:2012-03-21 15:13:45
【问题描述】:
抱歉,这是一个愚蠢的问题。我正在使用 .each 循环浏览一组图像并对每个图像进行内存加载以找到它的真实宽度和高度。然后使用这些数字来填充数组。问题是我想等到循环完成才能继续我的任务。这是我的代码:
$.each(items, function(){
$('<img/>').attr('src', $(this).attr('src')).load(function(){
myArray.push(this.width);
myArray.push(this.height);
});
});
console.log(myArray.length);
控制台总是记录 0,因为我怀疑 console.log 是在 .each 循环完成之前执行的。那会是正确的吗?我如何绕过它?非常感谢。
【问题讨论】:
-
$.each不是异步的,.load是。 -
由于图像是异步加载的,您希望如何处理?每次图像完成加载时,您都可以通过在
push之后调用调用来记录数组长度。或者正如罗迪建议的那样,您可以改为进行同步调用。您需要什么行为以及出于什么原因?显然,您希望做的不仅仅是您的问题。 -
最终我需要加载许多图像,这些图像的数量和大小可能不同,比较所有的宽度和高度以找到两者的上限。我还需要将宽度和高度存储在一个数组中,以便在代码中进一步使用。