Body接口方法:arrayBuffer()

2018-01-25 10:15 更新

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()的支持隐藏在首选项后面。

以上内容是否对您有帮助:
在线笔记
App下载
App下载

扫描二维码

下载编程狮App

公众号
微信公众号

编程狮公众号