我試圖通過從互聯網上下載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