ArrayBuffer против Blob и XHR2

XHR2 различия состояний

Возможность передавать объекты ArrayBuffer, Blob, File и FormData.

  • Каковы различия между ArrayBuffer и Blob?
  • Почему я должен заботиться о возможности посылать их через XHR2? (Я могу понять значение File и FormData)

1 ответ

Решение

Это попытка заменить старый метод, который брал бы "строку" и вырезал ее части.

Вы должны использовать ArrayBuffer, когда вам нужен типизированный массив, потому что вы собираетесь работать с данными, и большой двоичный объект, когда вам просто нужны данные файла.

BLOB-объекты (в соответствии со спецификацией в любом случае) имеют место для MIME, и их легче вставить в файловый API-интерфейс HTML5, чем в другие форматы (он более естественный для него).

ArrayBuffer позволяет нам работать с типизированными массивами, что намного быстрее, чем манипулирование строками, для работы с конкретными байтами, и позволяет нам определить, какой тип сегментов массива на самом деле. Поскольку JavaScript не является строго типизированным, трудно взять файл, который может быть разбит на массив из 32-битных или, возможно, 64-битных чисел с плавающей запятой (только представьте 8-битные) - это было бы кошмаром с точки зрения производительности при манипулировании строками и побитовом расчеты, особенно с Юникодом).

Насколько я могу судить, вы всегда можете переместить большой двоичный объект в буфер массива или в строковое представление, но это является родным для XHR, что позволяет сценариям работать быстрее, что является основным преимуществом.

Я бы использовал BLOB-объект для работы с файловым API, но я бы использовал массив для предварительной обработки данных.

Другие вопросы по тегам