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

浏览器兼容性

另见