Request方法:arrayBuffer()

2018-03-02 10:47 更新

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 不支持 不支持 不支持 支持 不支持 不支持 不支持
以上内容是否对您有帮助:
在线笔记
App下载
App下载

扫描二维码

下载编程狮App

公众号
微信公众号

编程狮公众号