--- title: Body.arrayBuffer() slug: Web/API/Body/arrayBuffer tags: - АПИ - Экспериментальный - справочник translation_of: Web/API/Body/arrayBuffer ---
Метод arrayBuffer()
из примеси(mixin) {{domxref("Body")}} берёт поток(stream) {{domxref("Response")}} и читает его до завершения. Он возвращает промис, который будет успешно завершён с помощью {{domxref("ArrayBuffer")}}.
response.arrayBuffer().then(function(buffer) { // можно сделать что либо с буфером });
Нат параметров.
Промис, который содержит {{domxref("ArrayBuffer")}}.
В нашем примере живой загрузки с array buffer есть кнопка Play. При нажатии на кнопку вызывается функция getData()
. Стоит учесть что до проигрывания аудио файл будет скачан целиком. Если вам необходимо начать воспроизведение файла ogg во время загрузки (стримить аудио) - то лучше рассмотреть {{domxref("HTMLAudioElement")}}:
new Audio(music.ogg).play()
В функции getData()
мы создаём новый запрос используя конструктор {{domxref("Request.Request")}}, после этого используем его чтобы загрузить OGG звук. Мы также используем {{domxref("AudioContext.createBufferSource")}} чтобы создать ресурс аудиобуффера. При успешном завершении запроса, мы считываем {{domxref("ArrayBuffer")}} из ответа используя arrayBuffer()
, декодируем аудио с помощью {{domxref("AudioContext.decodeAudioData")}}, устанавливаем раскодированные данные как ресурс аудио буфера (source.buffer
), затем используем данные этого ресурса в {{domxref("AudioContext.destination")}}.
Когда функция getData()
заканчивает своё выполнение, мы стартуем проигрывание аудио ресурса функцией start(0)
, потом блокируем кнопку проигрывания для предотвращения повторного проигрывания (это может привести к ошибкам)
function getData() { source = audioCtx.createBufferSource(); var myRequest = new Request('viper.ogg'); fetch(myRequest).then(function(response) { return response.arrayBuffer(); }).then(function(buffer) { audioCtx.decodeAudioData(buffer, function(decodedData) { source.buffer = decodedData; source.connect(audioCtx.destination); }); }); }; // навешиваем обработчики старт и стоп на кнопку play.onclick = function() { getData(); source.start(0); play.setAttribute('disabled', 'disabled'); }
Спецификация | Статус | Комментарии |
---|---|---|
{{SpecName('Fetch','#dom-body-arraybuffer','arrayBuffer()')}} | {{Spec2('Fetch')}} |
{{Compat("api.Body.arrayBuffer")}}