2013-09-01 22 views
3

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

当我使用浏览器做出同样的请求时,我每次都收到10ms以下的响应,所以我知道问题不存在。

这里是违规的代码。有任何想法吗?

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(“回应”)替换它,只是只要它仍然需要。我也尝试用我的ip替换localhost。

+0

你检查过重定向吗?尝试“customer_login /”,创建xmlhttprequest oobject不应该采取这种持续时间。您可以通过记录x = new Date()。getTime();在状态变化的每个点上。也尝试xml响应。 – islahul

+0

我也有这个问题; Flask服务器托管一个RESTful接口,content-type是application/json,而其他问题与OP相同。 –

回答

1

您可能希望在虚拟QML组件中创建虚拟XMLHttpRequest实例,该虚拟QML组件与Loader异步加载。只是一个想法。也许创建第一个XMLHttpRequest实例需要很长时间?

+0

在我的情况下,它不是XMLHttpRequest的实例化需要时间,而是对XMLHttpRequest.open()的调用。 –