--- title: Response.arrayBuffer() slug: Web/API/Response/arrayBuffer translation_of: Web/API/Response/arrayBuffer tags: - API - ArrayBuffer - Fetch - Method - Reference - Response browser-compat: api.Response.arrayBuffer ---
{{APIRef("Fetch")}}{{ SeeCompatTable() }}
{{domxref("Response")}}上的方法 arrayBuffer()
接受一个 {{domxref("Response")}} 流, 并等待其读取完成. 它返回一个 promise 实例, 并 resolve 一个 {{domxref("ArrayBuffer")}} 对象.
response.arrayBuffer().then(function(buffer) { // do something with buffer )};
无。
A promise that resolves with an {{domxref("ArrayBuffer")}}.
In our fetch array buffer example (run fetch array buffer live), we have a Play button. When pressed, the getData()
function is run.
In getData()
we create a new request using the {{domxref("Request.Request")}} constructor, then use it to fetch an OGG music track. We also use {{domxref("AudioContext.createBufferSource")}} to create an audio buffer source. When the fetch is successful, we read an {{domxref("ArrayBuffer")}} out of the response using arrayBuffer()
, decode the audio data using {{domxref("AudioContext.decodeAudioData")}}, set the decoded data as the audio buffer source's buffer (source.buffer
), then connect the source up to the {{domxref("AudioContext.destination")}}.
Once getData()
has finished running, we start the audio source playing with start(0)
, then disable the play button so it can't be clicked again when it is already playing (this would cause an error.)
function getData() { source = audioCtx.createBufferSource(); var myRequest = new Request('viper.ogg'); fetch(myRequest).then(function(response) { 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'); }
标准 | 状态 | 备注 |
---|---|---|
{{SpecName('Fetch','#dom-body-arraybuffer','arrayBuffer()')}} | {{Spec2('Fetch')}} |
{{ CompatibilityTable() }}
Feature | Chrome | Firefox (Gecko) | Internet Explorer | Opera | Safari (WebKit) |
---|---|---|---|---|---|
Basic support | {{ CompatChrome(41) }}[1] {{ CompatChrome(42) }} |
34[1] {{ CompatGeckoDesktop(39)}} |
{{ CompatNo }} |
28[1] |
{{ CompatNo }} |
Feature | Android | Firefox Mobile (Gecko) | Firefox OS (Gecko) | IE Phone | Opera Mobile | Safari Mobile | Chrome for Android |
---|---|---|---|---|---|---|---|
Basic support | {{ CompatNo }} | {{ CompatNo }} | {{ CompatNo }} | {{ CompatNo }} | {{ CompatNo }} | {{ CompatNo }} | {{ CompatNo }} |
[1] In Chrome 42, Firefox 34 and Opera 28 support for arrayBuffer()
was hidden behind a preference.