此页面由社区从英文翻译而来。了解更多并加入 MDN Web Docs 社区。

View in English Always switch to English

Response:bodyUsed 属性

基线 广泛可用

自 2017年3月 起,此特性已在主流浏览器中得到支持,可在大多数设备和浏览器版本中正常使用。

备注: 此特性在 Web Worker 中可用。

Response 接口的 bodyUsed 只读属性是一个布尔值,指示主体是否已被读取。

一个布尔值。

示例

检查 bodyUsed

本示例说明读取响应的主体会将 bodyUsed 的值从 false 变为 true

该示例包含一张空图片。

当示例的 JavaScript 运行时,我们获取一张图片,并将返回的 Promise 赋给变量 responsePromise

当用户点击“使用响应”时,我们检查该响应是否已被使用。如果已使用,则打印一条消息。如果尚未使用,则读取响应主体,并用它为图片的 src 属性提供值。

HTML

html
<p><button id="use">使用响应</button> <button id="reset">重置</button></p>
<p><img id="my-image" src="" width="150" /></p>
<pre id="log"></pre>

JavaScript

js
const useResponse = document.querySelector("#use");
const reset = document.querySelector("#reset");
const myImage = document.querySelector("#my-image");
const log = document.querySelector("#log");

const responsePromise = fetch(
  "/shared-assets/images/examples/firefox-logo.svg",
);

useResponse.addEventListener("click", async () => {
  const response = await responsePromise;
  if (response.bodyUsed) {
    log.textContent = "主体已被使用!";
  } else {
    const result = await response.blob();
    const objectURL = URL.createObjectURL(result);
    myImage.src = objectURL;
  }
});

reset.addEventListener("click", () => {
  document.location.reload();
});

结果

最初图片没有值。如果你点击一次“使用响应”,则 bodyUsedfalse,因此我们读取响应并设置图片。如果你再次点击“使用响应”,则 bodyUsedtrue,我们会打印消息。

点击“重置”可重新加载示例,以便再次尝试。

规范

规范
Fetch
# ref-for-dom-body-bodyused①

浏览器兼容性

参见