去掉同步 XHR

Eric Bidelman

请注意!XMLHttpRequest2 规范最近进行了更改,以禁止在设置 XMLHttpRequest.responseType 时发送同步请求。这一变更背后的理念是,尽可能减少同步 xhr 的使用。

例如,以下代码现在会在 Chrome 和 FF 的开发者渠道 build 中抛出 INVALID_ACCESS_ERR

var xhr = new XMLHttpRequest();
xhr.responseType = 'arraybuffer';
xhr.open('GET', '/', false); // sync request
xhr.send();

请参阅 WebKit 错误Mozilla 错误

同步 XHR 不好用的原因有很多,不过 MSDN 的博文“Why You Should Use XMLHttpRequest Aasyncly”(为什么应该异步使用 XMLHttpRequest),很好地解释了这些问题。

对于 Web 而言,这通常是一项重大变更,但可能会破坏一些依赖于同步行为的现有应用。请检查您的 XHR 代码并尽快进行更新,以使用异步请求。