为什么在估算连接速度时函数会返回“ undefined”?

时间:2019-06-06 00:29:35

标签: javascript

我对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;
    }

0 个答案:

没有答案