#xmlhttprequest #blob #arraybuffer #xmlhttprequest-level2
#xmlhttprequest #большой двоичный объект #arraybuffer #xmlhttprequest-level2
Вопрос:
Возможность передачи объектов ArrayBuffer, Blob, File и FormData.
- В чем разница между ArrayBuffer и Blob?
- Почему я должен заботиться о возможности отправки их через XHR2? (Я могу понять значение файла и FormData)
Ответ №1:
Это попытка заменить старый метод, который брал бы «строку» и вырезал из нее разделы.
Вы бы использовали ArrayBuffer, когда вам нужен типизированный массив, потому что вы собираетесь работать с данными, и большой двоичный объект, когда вам просто нужны данные файла.
В больших двоичных объектах (в любом случае, в соответствии со спецификацией) есть место для MIME, и их легче поместить в файловый API HTML5, чем в другие форматы (он более родной для него).
ArrayBuffer позволяет нам работать с типизированными массивами, что намного быстрее, чем обработка строк для работы с конкретными байтами, и позволяет нам определить, к какому типу на самом деле относятся сегменты массива. Поскольку JavaScript не является строго типизированным, трудно взять файл, который может быть разбит на массив из 32-битных целых чисел или, возможно, 64-битных чисел с плавающей запятой (только представьте 8-битные целые числа — это было бы кошмаром с точки зрения производительности при обработке строк и побитовых вычислениях, особенно в юникоде).
Насколько я могу судить, вы всегда можете переместить большой двоичный объект в буфер массива или в строковое представление, но это, будучи родным для XHR, позволяет сценариям работать быстрее, что является основным преимуществом.
Я бы использовал большой двоичный объект для работы с файловым API, но я бы использовал массив для предварительного вычисления данных.
Комментарии:
1. Итак, в основном для необработанной скорости Blob — это путь?