我对javascript相当满意(也是第一次使用stackoverflow的用户)。我试图获得连接速度的粗略估计(使用图像下载)。我想返回该值作为函数结果(不是警报-前三行代码只是为了演示问题),因此我可以使用它来调整网站上的媒体。但是,当我尝试这样做时,我得到的变量值未定义。
在进行一些研究时,似乎发现该问题可能与代码的异步执行有关-在映像完成下载之前返回该值。但是,我无法解决该问题或解决该问题。
var speed;
speed = estSpeedKbps();
alert(speed);
function estSpeedKbps() {
var imageAddr = "https://www.weber.edu/ui/images/wsu-logo.svg" + "?n=" + Math.random();
var startTime, endTime;
var downloadSize = 9264;
var download = new Image();
var speedKbps;
download.onload = function () {
endTime = (new Date()).getTime();
getResults();
};
startTime = (new Date()).getTime();
download.src = imageAddr;
function getResults() {
var duration = (endTime - startTime) / 1000;
var bitsLoaded = downloadSize * 8;
var speedBps = Math.round(bitsLoaded / duration);
speedKbps = (speedBps / 1024).toFixed(2);
//var speedMbps = (speedKbps / 1024).toFixed(2);
}
return speedKbps;
}