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 數組緩沖區(qū)中,存在一個播放按鈕。按下該播放按鈕時,該 getData() 函數將運行。請注意,播放完整的音頻文件之前將會下載。如果你需要在下載過程中播放 ogg,請考慮 HTMLAudioElement:

new Audio(music.ogg).play()

在 getData() 中,我們使用 Request.Request 構造函數創(chuàng)建一個新的請求,然后使用它來獲取一個 OGG 的音樂曲目。我們也使用 AudioContext.createBufferSource 來創(chuàng)建一個音頻緩沖區(qū)源。當讀取成功時,我們使用  arrayBuffer() 從使用中讀出 ArrayBuffer 響應,使用 AudioContext.decodeAudioData 解碼音頻數據,將解碼數據設置為音頻緩沖源的緩沖區(qū)(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');
}

規(guī)范

規(guī)范 狀態(tài) 注釋
Fetch
在該規(guī)范中'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

公眾號
微信公眾號

編程獅公眾號