Метод arrayBuffer()
из примеси(mixin) Body
берет поток(stream) Response
и читает его до завершения. Он возвращает промисс, который будет успешно завершен с помощью ArrayBuffer
.
Синтаксис
response.arrayBuffer().then(function(buffer) { // можно сделать что либо с буфером });
Параметры
Нат параметров.
Возвращаемое значение
Промисс, который содержит ArrayBuffer
.
Пример
В нашем примере живой загрузки с array buffer есть кнопка Play. При нажатии на кнопку вызывается функция getData()
. Стоит учесть что до проигрывания аудио файл будет скачан целиком. Если вам необходимо начать воспроизведение файла ogg во время загрузки (стримить аудио) - то лучше рассмотреть HTMLAudioElement
:
new Audio(music.ogg).play()
В функции getData()
мы создаем новый запрос используя конструктор Request.Request
, после этого используем его чтобы загрузить OGG звук. Мы также используем AudioContext.createBufferSource
чтобы создать ресурс аудиобуффера. При успешном завершении запроса, мы считываем ArrayBuffer
из ответа испозуя arrayBuffer()
, декодируем аудио с помощью AudioContext.decodeAudioData
, устанавливаем раскодированные данные как ресурс аудио буфера (source.buffer
), затем используем данные этого ресурса в 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'); }
Спецификация
Спецификация | Статус | Комментарии |
---|---|---|
Fetch Определение 'arrayBuffer()' в этой спецификации. |
Живой стандарт |
Поддержка браузерами
Компьютеры | Мобильные | |||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|
arrayBuffer | Chrome
Полная поддержка
42
| Edge Полная поддержка Да | Firefox
Полная поддержка
39
| IE Нет поддержки Нет | Opera
Полная поддержка
29
| Safari Нет поддержки Нет | WebView Android Нет поддержки Нет | Chrome Android Нет поддержки Нет | Firefox Android Нет поддержки Нет | Opera Android
Полная поддержка
29
| Safari iOS Нет поддержки Нет | Samsung Internet Android Нет поддержки Нет |
Легенда
- Полная поддержка
- Полная поддержка
- Нет поддержки
- Нет поддержки
- Экспериментальная. Ожидаемое поведение может измениться в будущем.
- Экспериментальная. Ожидаемое поведение может измениться в будущем.
- Пользователь должен сам включить эту возможность.
- Пользователь должен сам включить эту возможность.