1
AmはXMLHttpRequestのにタイムアウトを設定しようとしているが、それはinvalid state error
を示し、ここでコードXHRタイムアウトは
function get(url, options) {
return new Promise((resolve, reject) => {
const xhr = new XMLHttpRequest();
// headers
if (options && options.headers) {
for (let header in options.headers) {
if (options.headers.hasOwnProperty(header)) {
xhr.setRequestHeader(header, options.headers[header]);
}
}
}
xhr.open('GET', url);
// FIXME: Why is IE11 failing on "xhr.timeout?
// xhr.timeout = 10000;
xhr.onload = function() {
if (this.status >= 200 && this.status < 300) {
try {
const data = JSON.parse(xhr.responseText);
resolve(data);
} catch (ex) {
reject({
status: this.status,
statusText: xhr.statusText
});
}
} else {
reject({
status: this.status,
statusText: xhr.statusText
});
}
};
xhr.ontimeout = function() {
reject({
status: this.status,
statusText: xhr.statusText
});
};
xhr.onerror = function() {
reject({
status: this.status,
statusText: xhr.statusText
});
};
xhr.send();
});
}
export default { get };
私は、以下のリンクlink1link2link3、具体的に見ていたのですIE11で無効な状態異常を与えますxhr.timeout
をxhr.open
とxhr.send
の間に保ちました
xhr.onreadystatechange = function() {
if(xhr.readyState == 1) {
xhr.timeout = 5000;
}
};
しかし、あなたが使用しているIE11のバージョンは何運
あなたのFIXMEコメントについて:[@Mozila](https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequest/timeout)それに注意してください。 –