有时候我的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')
,您将第二次发出警告。
我错过了什么?