不需要的~5秒延迟对chrome 42的XHR请求

时间:2015-05-18 03:20:43

标签: javascript google-chrome xmlhttprequest

有时候我的XHR请求在开始之前会持续5秒,这个问题只发生在chrome 42上(在canary 45和firefox上都没问题)

跟踪显示它们卡在"URLRequest:ResponseStarted"

如果我abort()请求并重新启动一个具有相同参数的新请求,它会像往常一样立即启动。

第一个请求总是正常工作。

function generateLoader(url) {
    var xhr = new XMLHttpRequest();
    xhr.open('GET', url, true);
    xhr.send(null);
    return xhr;
}

function reproduceBug(url) {
  var xhr = generateLoader(url);
  // this is my poor attempt to bypass the delay :
  var stuckInPending = setTimeout(function() {
      console.warn('request appears to be stuck, re-trying');
      xhr.onreadystatechange = undefined;
      xhr.abort();
      xhr = generateLoader(url);
  }, 250);

  // if the onreadystatechange begins before the timeout, clear it.
  xhr.onreadystatechange = function () {
      clearTimeout(stuckInPending);
      this.onreadystatechange = undefined;
  };
}

如果您连续2次致电reproduceBug('/path/to/data'),您将第二次发出警告。

我错过了什么?

screenshot of chrome trace

0 个答案:

没有答案