codecamp

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 不支持 不支持 不支持 支持 不支持 不支持 不支持
Request属性:url
Request方法:blob()
温馨提示
下载编程狮App,免费阅读超1000+编程语言教程
取消
确定
目录

Fetch API官方文档指南

Fetch API方法

WindowOrWorkerGlobalScope执行者:window

window属性

WindowOrWorkerGlobalScope执行者:WorkerGlobalScope

关闭

MIP.setData({ 'pageTheme' : getCookie('pageTheme') || {'day':true, 'night':false}, 'pageFontSize' : getCookie('pageFontSize') || 20 }); MIP.watch('pageTheme', function(newValue){ setCookie('pageTheme', JSON.stringify(newValue)) }); MIP.watch('pageFontSize', function(newValue){ setCookie('pageFontSize', newValue) }); function setCookie(name, value){ var days = 1; var exp = new Date(); exp.setTime(exp.getTime() + days*24*60*60*1000); document.cookie = name + '=' + value + ';expires=' + exp.toUTCString(); } function getCookie(name){ var reg = new RegExp('(^| )' + name + '=([^;]*)(;|$)'); return document.cookie.match(reg) ? JSON.parse(document.cookie.match(reg)[2]) : null; }