已抵达!xhr.send(ArrayBufferViews)

Eric Bidelman

你认为我们已经改进了 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,及时了解这些类型的变更。