已抵達!xhr.send(ArrayBufferViews)

你以為我們已經完成改善 XHR 了嗎?

目前,XHR2 的超載 send() 方法已支援傳送 ArrayBuffer (原始位元組陣列)。

Chrome 22 (目前的 Canary 版本) 已淘汰這項功能,改為傳送 ArrayBufferView。JS 型別陣列只是特殊的 ArrayBufferView,因此這一切的真正意義是,您現在可以直接透過網路傳送型別陣列,而無須觸及其基礎緩衝區。這項變更與 XMLHttpRequest2 規格的最新更新相符。

舉例來說,請不要傳送 ArrayBuffer

var xhr = new XMLHttpRequest();
xhr.open('POST', '/server', true);
xhr.onload = function(e) { ... };

var uInt8Array = new Uint8Array([1, 2, 3]);

xhr.send(uInt8Array.buffer);

只需傳送已指定型別的陣列即可:

xhr.send(uInt8Array);

傳送 ArrayBuffers 的功能最終會移除,但目前嘗試傳送緩衝區時,您會收到主控台警告。

如往,只要追蹤 chromestatus.com,就能掌握這類變更。