移除同步 XHR

Eric Bidelman

請注意!XMLHttpRequest2 規格是在已設定 XMLHttpRequest.responseType 時禁止傳送同步要求。這個變更的用意是盡可能減少進一步使用的同步 X 小時。

舉例來說,以下程式碼現在會在 Chrome 和 FF 的開發人員版本版本中擲回 INVALID_ACCESS_ERR

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

請參閱 WebKit BugMozilla Bug

同步 XHR 造成許多問題的原因有很多,但 MSDN 網誌文章「Why You should Use XMLHttpRequest A 同步 ly」(為什麼應使用 XMLHttpRequest 非同步) 對於問題提供了充分的說明。

這對於網路來說是相當大的改變,但可能會破壞一些依賴同步行為的現有應用程式。請檢查 XHR 程式碼,並盡快更新以使用非同步要求。