codecamp

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

Body接口属性:bodyUsed
Body接口方法: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; }