--- title: Body.arrayBuffer() slug: Web/API/Body/arrayBuffer tags: - API - Экспериментальный - справочник 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")}}