ArrayBuffer против большого двоичного объекта и XHR2

#xmlhttprequest #blob #arraybuffer #xmlhttprequest-level2

#xmlhttprequest #большой двоичный объект #arraybuffer #xmlhttprequest-level2

Вопрос:

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

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

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

Ответ №1:

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

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

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

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

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

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

Комментарии:

1. Итак, в основном для необработанной скорости Blob — это путь?