Response: bodyUsed 屬性

Baseline 已廣泛支援

此特性已得到良好確立,可跨多種裝置和瀏覽器版本使用。自 2017 年 3 月起,所有瀏覽器均支援此特性。

注意:此功能在 Web Workers 中可用。

Response 介面的只讀屬性 bodyUsed 是一個布林值,用於指示響應體是否已被讀取。

一個布林值。

示例

檢查 bodyUsed

本示例說明讀取響應體後,bodyUsed 的值會從 false 變為 true

示例包含一個空圖片。

當示例的 JavaScript 執行時,我們會獲取一個圖片,並將返回的 Promise 賦值給變數 responsePromise

當用戶點選“使用響應”時,我們會檢查響應是否已被使用。如果已被使用,我們會列印一條訊息。如果尚未被使用,我們會讀取響應體,並用它為圖片的 src 屬性提供值。

HTML

html
<p><button id="use">Use response</button> <button id="reset">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 = "Body has already been used!";
  } 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①

瀏覽器相容性

另見