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

View in English Always switch to English

Fetch API

Fetch API 提供了一个用于获取资源(包括跨网络通信)的接口。它是 XMLHttpRequest 的一个更强大、更灵活的替代。

概念和用法

Fetch API 使用 RequestResponse 对象(以及网络请求涉及的其他内容),还涉及 CORS 和 HTTP Origin 标头语义等相关概念。

要发起请求并获取资源,请使用 fetch() 方法。该方法在 WindowWorker 上下文中均为全局方法。这意味着在几乎任何需要获取资源的上下文中,都可以使用它。

fetch() 方法有一个必需参数,即要获取资源的路径。它返回一个 Promise,该 Promise 会在服务器返回头部信息后,立即解析兑现为该请求的 Response 对象——即使服务器的响应是 HTTP 错误状态。你也可以传入一个可选的 init 选项对象作为第二个参数(参见 Request)。

一旦获取到 Response 对象后,就有多种方法可用于定义主体内容以及如何处理该内容。

虽然可以直接使用 Request()Response() 构造函数创建请求和响应对象,但这种做法并不常见。通常,它们会作为其他 API 操作的结果被创建(例如,来自 service worker 的 FetchEvent.respondWith())。

有关使用 Fetch API 功能的更多信息,请参见使用 Fetch

延迟 Fetch

fetchLater() API 允许开发者请求延迟获取,它可以在指定的时间段之后发送,或者在页面关闭或导航离开时发送。参见使用延迟 Fetch

接口

Window.fetch()WorkerGlobalScope.fetch()

用于获取资源的 fetch() 方法。

Window.fetchLater()

用于发起延迟获取请求。

DeferredRequestInit

表示可用于配置延迟获取请求的选项集合。

FetchLaterResult

表示请求延迟获取的结果。

Headers

表示响应/请求的标头信息,允许你查询这些信息,并根据结果采取不同的操作。

Request

表示资源请求。

Response

表示对请求的响应。

HTTP 标头

deferred-fetch

控制 fetchLater() API 的顶级配额

deferred-fetch-minimal

控制 fetchLater() API 的跨源子框架共享配额

规范

Specification
Fetch
# fetch-method
Fetch
# deferred-fetch

浏览器兼容性

api.fetch

api.Window.fetchLater

参见