2.4 读取内容的方法

Response对象根据服务器返回的不同类型的数据,提供了不同的读取方法。

  • response.text():得到文本字符串。
  • response.json():得到 JSON 对象。
  • response.blob():得到二进制 Blob 对象。
  • response.formData():得到 FormData 表单对象。
  • response.arrayBuffer():得到二进制 ArrayBuffer 对象。

上面5个读取方法都是异步的,返回的都是 Promise 对象。必须等到异步操作结束,才能得到服务器返回的完整数据。

response.text()

response.text()可以用于获取文本数据,比如 HTML 文件。

  1. const response = await fetch('/users.html');
  2. const body = await response.text();
  3. document.body.innerHTML = body

response.json()

response.json()主要用于获取服务器返回的 JSON 数据,前面已经举过例子了。

response.formData()

response.formData()主要用在 Service Worker 里面,拦截用户提交的表单,修改某些数据以后,再提交给服务器。

response.blob()

response.blob()用于获取二进制文件。

  1. const response = await fetch('flower.jpg');
  2. const myBlob = await response.blob();
  3. const objectURL = URL.createObjectURL(myBlob);
  4. const myImage = document.querySelector('img');
  5. myImage.src = objectURL;

上面示例读取图片文件flower.jpg,显示在网页上。

response.arrayBuffer()

response.arrayBuffer()主要用于获取流媒体文件。

  1. const audioCtx = new window.AudioContext();
  2. const source = audioCtx.createBufferSource();
  3. const response = await fetch('song.ogg');
  4. const buffer = await response.arrayBuffer();
  5. const decodeData = await audioCtx.decodeAudioData(buffer);
  6. source.buffer = buffer;
  7. source.connect(audioCtx.destination);
  8. source.loop = true;

上面示例是response.arrayBuffer()获取音频文件song.ogg,然后在线播放的例子。