QML中的第一个XHR请求非常慢(v8上运行的javascript)

QML中的第一个XHR请求非常慢(v8上运行的javascript),javascript,ajax,qml,qt5,qtquick2,Javascript,Ajax,Qml,Qt5,Qtquick2,我有一个QML页面(QtQuick2),它向外部服务器发出XHR请求。现在服务器正在我的本地机器上运行,第一次发出此请求需要约1.5秒。每个后续请求都在100ms以下 当我使用浏览器发出同样的请求时,每次都会在10毫秒内得到响应,所以我知道问题并不存在 这是违规代码。有什么想法吗 function login(key) { var xhr = new XMLHttpRequest(); var params = "Fob_num=" + key; xhr.open("PO

我有一个QML页面(QtQuick2),它向外部服务器发出XHR请求。现在服务器正在我的本地机器上运行,第一次发出此请求需要约1.5秒。每个后续请求都在100ms以下

当我使用浏览器发出同样的请求时,每次都会在10毫秒内得到响应,所以我知道问题并不存在

这是违规代码。有什么想法吗

function login(key) {
    var xhr = new XMLHttpRequest();
    var params = "Fob_num=" + key;
    xhr.open("POST","http://localhost:9000/customer_login",true);

    xhr.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
    xhr.setRequestHeader("Content-length", params.length);
    xhr.setRequestHeader("Connection", "close");

    xhr.onreadystatechange = function() {
        if ( xhr.readyState == xhr.DONE) {
            if ( xhr.status == 200) {
                handleResponse(xhr.responseText);
            } else {
                console.log("error with login--status:  " + xhr.status)
                displayErr("Oops, something's wrong. Please try again.")
            }
        }
    }
    xhr.send(params);
}

问题不在于handleResponse()函数,我已经尝试用console.log(“response”)替换它,但仍然需要同样长的时间。我还尝试用我的ip替换localhost。

您可能希望在虚拟QML组件中创建一个虚拟
XMLHttpRequest
实例,并使用
加载程序异步加载该组件。只是个主意。可能创建第一个
XMLHttpRequest
实例需要很长时间?

是否检查了是否发生重定向?尝试“customer_login/”,创建xmlhttprequest对象不应花费这种时间。您可以通过记录x=new Date().getTime()来评测函数;在状态变化的每一点上。还可以尝试xml响应;Flask服务器承载一个RESTful接口,内容类型是application/json,问题与OP相同。在我的例子中,花费时间的不是XMLHttpRequest的实例化,而是对XMLHttpRequest.open()的调用。