Request方法:arrayBuffer()
arrayBuffer() 方法
Body mixin 的 arrayBuffer() 方法采用 Response 流并将其读入完成。它返回一个 ArrayBuffer 解决的 promis。
arrayBuffer() 方法的语法
response.arrayBuffer().then(function(buffer) {
// do something with buffer
});
arrayBuffer() 方法参数
arrayBuffer() 方法没有参数。
arrayBuffer() 方法返回值
arrayBuffer() 方法返回一个 promis,该 promis 一个 ArrayBuffer 解决。
arrayBuffer() 方法示例
在我们的 fetch 数组缓冲区中,存在一个播放按钮。按下该播放按钮时,该 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);
});
});
};
// wire up buttons to stop and play audio
play.onclick = function() {
getData();
source.start(0);
play.setAttribute('disabled', 'disabled');
}
规范
规范 | 状态 | 注释 |
---|---|---|
Fetch
在该规范中'arrayBuffer()'的定义。
|
Living Standard
|
浏览器兼容性
电脑端 | 移动端 | |||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|
Chrome
|
Edge
|
Firefox
|
Internet Explorer
|
Opera
|
Safari
|
Androidwebview
|
Chrome for Android
|
Edge Mobile |
Firefox
for
Android
|
Opera
for
Android
|
iOS Safari | |
基本支持 | 支持:42 | 支持 | 支持:39 | 不支持 | 支持:29 | 不支持 | 不支持 | 不支持 | 支持 | 不支持 | 不支持 | 不支持 |