Javascript文本文件加载延迟

时间:2016-08-24 08:17:20

标签: javascript xmlhttprequest

我正在使用这个简单的方法加载位于我服务器上的.txt文件:

function getFileFromServer(url, doneCallback) 
{
 console.time("getFileFromServer");
 var xhr;

 xhr = new XMLHttpRequest();
 xhr.onreadystatechange = handleStateChange;
 xhr.open("GET", url, true);
 xhr.send();

 function handleStateChange() {
     if (xhr.readyState === 4) {
         doneCallback(xhr.status == 200 ? xhr.responseText : null);
     }
 }
 console.timeEnd("getFileFromServer");
}

我以这种简单的方式使用它,因此对于这篇文章:Reading a txt file from Server, writing it to website

function loadFile( url ) {
    console.time("loadFile");
    getFileFromServer(url, function(text) {
    if (text === null) {
        console.log("error-loading-file");
    }
    else {
        console.timeEnd("loadFile");
        doStuff(text);
    }
});

正如您所看到的,我已将控制台时间用于跟踪时间。这是浏览器控制台的答案:

getFileFromServer:1.744ms

loadFile:18114.871ms

我不是一个javascript专家,我唯一可以解释时间差异的是参数传递(C ++中的值vs引用)。 有人能解释我这个时间差异吗?

1 个答案:

答案 0 :(得分:1)

getFileFromServer完成得非常快的原因是没有真正的处理。该函数不会等到请求从服务器返回,但只会注册回调函数。这意味着发送请求需要1.744毫秒,仅此而已。

loadFile函数用于衡量发送请求和实际获得响应之间的时间。差别就是这样。