Body.arrayBuffer()

Die Methode arrayBuffer() des Body Mixin nimmt einen Response Stream und liest ihn bis zum Ende. Sie gibt ein Promise zurück, welches in einen ArrayBuffer aufgelöst wird.

Syntax

response.arrayBuffer().then(function(buffer) {
  // mach etwas mit dem Buffer
});

Parameter

Keine.

Rückgabewert

Ein Promise, welches in einen ArrayBuffer aufgelöst wird.

Beispiel

In unserem Live-Beispiel zum Abruf eines Array Buffers haben wir einen Wiedergabe-Knopf. Bei einem Klick darauf wird die Funktion getData() ausgeführt. Beachten Sie, dass vor der Wiedergabe die ganze Audio-Datei heruntergeladen wird. Benötigen Sie eine Wiedergabe noch während des Downloads (Streaming) ziehen Sie HTMLAudioElement in Betracht:

new Audio(music.ogg).play()

In getData() erstellen wir eine neue Anfrage mit dem Request.Request Konstruktor, um dann einen OGG Musik-Track abzurufen. Wir benutzen ebenfalls AudioContext.createBufferSource um eine Audio-Puffer-Quelle zu erstellen. Ist der Abruf erfolgreich, lesen wir mit arrayBuffer() einen ArrayBuffer aus der Antwort, dekodieren die Audiodaten mit AudioContext.decodeAudioData, setzen die dekodierten Daten als Quelle für den Audio-Puffer fest und verbinden die Quelle mit AudioContext.destination.

Wenn getData() durchgelaufen ist, starten wir die Wiedergabe mit start(0) und deaktivieren den Wiedergabe-Knopf, damit er nicht erneut geklickt werden kann, während die Wiedergabe läuft (was zu einem Fehler führen würde).

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

// Knöpfe zum Abspielen und Anhalten verknüpfen

play.onclick = function() {
  getData();
  source.start(0);
  play.setAttribute('disabled', 'disabled');
}

Spezifikationen

Specification Status Comment
Fetch
Die Definition von 'arrayBuffer()' in dieser Spezifikation.
Lebender Standard  

Browserkompatibilität

BCD tables only load in the browser

Siehe auch