Body接口方法:arrayBuffer()
arrayBuffer()方法
Body mixin 的 arrayBuffer () 方法采用Response流,并将其读入完成。它返回的promise,解决ArrayBuffer。
arrayBuffer () 方法语法
arrayBuffer() 方法的语法格式如下所示:
response.arrayBuffer().then(function(buffer) {
// do something with buffer
});
arrayBuffer() 方法参数
arrayBuffer() 方法没有参数。
arrayBuffer() 方法的返回
arrayBuffer() 方法会返回一个promise,可以解决一个ArrayBuffer。
方法示例
在我们的取数组缓冲区中,我们有一个播放(Play)按钮。按下时,该getData()函数运行。请注意,在播放完整音频文件之前,请先下载。如果你需要在下载(stream)时播放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
|
浏览器兼容性
- 电脑端
Feature
|
Chrome
|
Edge
|
Firefox(Gecko)
|
Internet Explorer
|
Opera
|
Safari(WebKit) |
---|---|---|---|---|---|---|
基本的支持 |
支持:41 [1]、42
|
(是) | 支持:34 [1] 、39 | 不支持 |
支持:28 [1]、29 |
不支持 |
- 移动端
Feature | Android | Edge | Firefox Mobile (Gecko) | Firefox OS (Gecko) | IE Phone | Opera Mobile | Safari Mobile | Chrome for Android |
---|---|---|---|---|---|---|---|---|
基本的支持 | 不支持 | (是) | 不支持 | 不支持
|
不支持
|
不支持
|
不支持
|
不支持
|
以下是对于上表中角标的注解:
[1]在Chrome 42、Firefox 34和Opera 28中对于arrayBuffer()的支持隐藏在首选项后面。