我们的志愿者还没有将这篇文章翻译为 中文 (简体)加入我们帮助完成翻译!
您也可以阅读此文章的English (US)版。

This page is not complete.

This is an experimental technology
Because this technology's specification has not stabilized, check the compatibility table for usage in various browsers. Also note that the syntax and behavior of an experimental technology is subject to change in future versions of browsers as the specification changes.

The FetchController interface of the Fetch API represents a controller object that allows you to control one or more fetch requests.

You can create a new FetchController object using the FetchController.FetchController() constructor. communicating with a fetch request is done using a FetchSignal.


Creates a new FetchController object instance.


FetchController.signal Read only
Returns a FetchSignal object instance, which can be used to communicate with/control a fetch request.


Aborts a fetch request before it has completed.


In the following snippet, we create a new FetchController object, get its signal, and then give the signal to the fetch request via the signal parameter of its init object so the controller can control it. Later on we specify an event listener on a cancel button so that when the button is clicked, we abort the fetch request using FetchController.abort().

var controller = new FetchController();
var signal = controller.signal;
downloadBtn.addEventListener('click', function() {
  fetch(url, {signal}).then( ... ) // do something with the response
cancelBtn.addEventListener('click', function() {

You can find a work-in-progress demo showing usage of FetchController on GitHub (see the source code and the live example).


Not part of a specification yet.

Browser compatibility

Feature Chrome Edge Firefox (Gecko) Internet Explorer Opera Safari (WebKit)
Basic support

No support

No support No support[1] No support

No support

No support
Feature Android Android Webview Edge Firefox Mobile (Gecko) IE Phone Opera Mobile Safari Mobile Chrome for Android
Basic support No support No support No support No support[1] No support No support No support No support

[1] Hidden behind a preference in 55+ Nightly. In about:config, you need to create two new boolean prefs — dom.fetchObserver.enabled and dom.fetchController.enabled — and set the values of both to true.

See also