我试图通过从互联网上下载3个图像文件,并平均加载它们花费的时间来实现speedtest。如果出于任何原因有错误,我想跳过加载该图像并继续下一个。如果错误发生在最后一张图片上,那么我想计算当时的平均速度并返回给调用者。JavaScript抑制错误,并继续在for循环
现在,一旦发生错误(我故意更改了图像的网址,因此它不存在),它不会进一步。我试过从.onerror函数返回true,但没有运气。有什么建议么?
var images = [{
"url": 'http://<removed>250k.jpg?n=' + Math.random(),
"size": 256000
}, {
"url": 'http://<removed>500k.jpg?n=' + Math.random(),
"size": 512000
}, {
"url": '<removed>1000k.jpg?n=' + Math.random(),
"size": 1024000
}
];
function calculateBandwidth() {
var results = [];
for (var i = 0; i < images.length; i++) {
var startTime, endTime;
var downloadSize = images[i].size;
var download = new Image();
download.onload = function() {
endTime = (new Date()).getTime();
var duration = (endTime - startTime)/1000;
var bitsLoaded = downloadSize * 8;
var speedBps = (bitsLoaded/duration).toFixed(2);
var speedKbps = (speedBps/1024).toFixed(2);
var speedMbps = (speedKbps/1024).toFixed(2);
results.push(speedMbps);
//Calculate the average speed
if (results.length == 3) {
var avg = (parseFloat(results[0]) + parseFloat(results[1]) + parseFloat(results[2])).toFixed(2);
return avg;
}
}
download.onerror = function (e) {
console.log("Failed to load image!");
return true;
};
startTime = (new Date()).getTime();
download.src = images[i].url;
}
}
看看尝试/ catch块 – 2013-03-27 00:19:02
你回来时,它失败了这就是为什么我猜 – btevfik 2013-03-27 00:19:12
有没有必要返回,一旦你回来你打破你的循环 – Ryoku 2013-03-27 00:25:58