DeferredRequestInit

可用性有限

此特性不是基線特性,因為它在一些最廣泛使用的瀏覽器中不起作用。

實驗性: 這是一項實驗性技術
在生產中使用此技術之前,請仔細檢查瀏覽器相容性表格

DeferredRequestInit 字典是 fetchLater() API 的一部分,用於配置延遲的 fetch 請求的選項。

DeferredRequestInit 物件直接作為第二個引數傳遞給 window.fetchLater() 函式呼叫。

例項屬性

該字典擴充套件了 RequestInit 字典,並增加了以下屬性:

activateAfter 可選

一個 DOMHighResTimeStamp,指示 fetch 請求應在多少毫秒後傳送。在頁面導航離開時,fetch 請求可能會提前傳送。*實際*的傳送時間是未知的,因為瀏覽器可能會等待更長或更短的時間,例如為了最佳化批次延遲的 fetch 請求。如果未提供 activateAfter 屬性,則延遲的 fetch 請求會一直等到頁面訪問結束(包括進入 bfcache)。

異常

RangeError DOMException

當提供了負數的 activateAfter 時引發。

示例

延遲一個 GET 請求,直到頁面被銷燬或進入 bfcache。

在此示例中,未提供 DeferredRequestInit 物件,也未使用超時。

js
fetchLater("/send_beacon");

延遲一個 POST 請求約 1 分鐘。

在此示例中,我們建立了一個 Request 物件,並提供了一個 activateAfter 值來延遲 60,000 毫秒(即一分鐘)傳送請求。

js
fetchLater("/send_beacon", {
  method: "POST",
  body: getBeaconData(),
  activateAfter: 60000, // 1 minute
});

注意: 實際傳送時間是未知的,因為瀏覽器可能會等待更長或更短的時間,例如為了最佳化批次延遲的 fetch 請求。

規範

規範
Fetch
# deferred-fetch

瀏覽器相容性

另見