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() 方法參數(shù)

arrayBuffer() 方法沒有參數(shù)。

arrayBuffer() 方法的返回

arrayBuffer() 方法會(huì)返回一個(gè)promise,可以解決一個(gè)ArrayBuffer。

方法示例

在我們的取數(shù)組緩沖區(qū)中,我們有一個(gè)播放(Play)按鈕。按下時(shí),該getData()函數(shù)運(yùn)行。請注意,在播放完整音頻文件之前,請先下載。如果你需要在下載(stream)時(shí)播放ogg,請考慮HTMLAudioElement:

new Audio(music.ogg).play()

在getData()函數(shù)中,我們使用Request.Request構(gòu)造函數(shù)創(chuàng)建一個(gè)新的請求,然后用它來獲取一個(gè)OGG音軌。我們也使用AudioContext.createBufferSource來創(chuàng)建一個(gè)音頻緩沖源。當(dāng)獲取成功時(shí),我們使用arrayBuffer()在響應(yīng)外讀取一個(gè)ArrayBuffer,使用AudioContext.decodeAudioData解碼音頻數(shù)據(jù),將解碼數(shù)據(jù)設(shè)置為音頻緩沖源的緩沖區(qū)(source.buffer),然后將源連接到AudioContext.destination。

一旦getData()完成運(yùn)行,我們就使用start(0)開始播放音頻源,然后禁用播放按鈕,以便在播放時(shí)不能再次單擊(這會(huì)導(dǎo)致錯(cuò)誤)。

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');
}

規(guī)范

規(guī)范 狀態(tài) 評論
Fetch
在該規(guī)范中“arrayBuffer()的定義。
Living Standard
 

瀏覽器兼容性

  • 電腦端
Feature
Chrome
Edge
Firefox(Gecko)
Internet Explorer
Opera
Safari(WebKit)
基本的支持
支持:41 [1]、42
 
(是) 支持:34 [1] 、39 不支持

支持:28 [1]、29

不支持
  • 移動(dòng)端
Feature Android Edge Firefox Mobile (Gecko) Firefox OS (Gecko) IE Phone Opera Mobile Safari Mobile Chrome for Android
基本的支持 不支持 (是) 不支持 不支持
不支持
不支持
不支持
不支持

以下是對于上表中角標(biāo)的注解:

[1]在Chrome 42、Firefox 34和Opera 28中對于arrayBuffer()的支持隱藏在首選項(xiàng)后面。

以上內(nèi)容是否對您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號(hào)
微信公眾號(hào)

編程獅公眾號(hào)