我似乎在提出HEAD
请求和保持数组中数据的完整性方面遇到了一些问题。
鉴于此片段:
var imageTemp = Array();
$('*')
.each(function(index){
if($(this).css('background-image') != 'none'){
imageTemp.push($(this).css('background-image').slice(5, -2));
}
});
我捕获给定页面上所有背景图像的 URL。现在,尝试通过HEAD
请求获取每个图像的大小Content-Length
,我使用以下代码段:
var imageData = Array();
for(var i = 0; i < imageTemp.length; i++){
ajaxSizeRequest = $.ajax({
type: "HEAD",
async: true,
url: imageTemp[i],
success: function(message){
imageData.push([imageTemp[i], ajaxSizeRequest.getResponseHeader('Content-Length')]);
}
});
}
但是,当我转储imageData
via 时console.log
,我每个元素(它应该是一个包含 URL 和内容长度的数组)最终作为[undefined, XXXX]
whereXXXX
总是最后请求的大小Content-Length
我很难过,虽然这似乎是一个时间/范围问题。我这里发生了某种竞争条件吗?