mirror of
https://github.com/tenrok/axios.git
synced 2026-06-17 19:21:29 +03:00
054c1f30fd
* ci: set hardened --ignore-scripts for all ci actions * docs: adds new docs platform * chore: remove un-needed ignore * chore: add sponsors data. adjust package.json to be of type module * fix: inconsistency between the docs and readme * fix: docs inconsistency * docs: update language and phrasing * style: fix issues with card styling * docs: update security.md with latest changes * docs: remove un-needed code * docs: fix inconsistencies with actual library function * ci: added deployment for docs * chore: added axios as dep for docs * docs: fix batch of errors * fix: bump esbuild as the version included is a risk
71 lines
2.0 KiB
Markdown
71 lines
2.0 KiB
Markdown
# Cancellation
|
|
|
|
Starting from v0.22.0 Axios supports AbortController to cancel requests in a clean way. This feature is available in the browser and in Node.js when using a version of Axios that supports AbortController. To cancel a request, you need to create an instance of `AbortController` and pass its `signal` to the request's `signal` option.
|
|
|
|
```js
|
|
const controller = new AbortController();
|
|
|
|
axios
|
|
.get("/foo/bar", {
|
|
signal: controller.signal,
|
|
})
|
|
.then(function (response) {
|
|
//...
|
|
});
|
|
// cancel the request
|
|
controller.abort();
|
|
```
|
|
|
|
## CancelToken <Badge type="danger" text="Deprecated" />
|
|
|
|
You can also use the `CancelToken` API to cancel requests. This API is deprecated and will be removed in the next major release. It is recommended to use `AbortController` instead. You can create a cancel token using the `CancelToken.source` factory as shown below:
|
|
|
|
```js
|
|
const CancelToken = axios.CancelToken;
|
|
const source = CancelToken.source();
|
|
|
|
axios
|
|
.get("/user/12345", {
|
|
cancelToken: source.token,
|
|
})
|
|
.catch(function (thrown) {
|
|
if (axios.isCancel(thrown)) {
|
|
console.log("Request canceled", thrown.message);
|
|
} else {
|
|
// handle error
|
|
}
|
|
});
|
|
|
|
axios.post(
|
|
"/user/12345",
|
|
{
|
|
name: "new name",
|
|
},
|
|
{
|
|
cancelToken: source.token,
|
|
}
|
|
);
|
|
|
|
// cancel the request (the message parameter is optional)
|
|
source.cancel("Operation canceled by the user.");
|
|
```
|
|
|
|
You can also create a cancel token by passing an executor function to the `CancelToken` constructor:
|
|
|
|
```js
|
|
const CancelToken = axios.CancelToken;
|
|
let cancel;
|
|
|
|
axios.get("/user/12345", {
|
|
cancelToken: new CancelToken(function executor(c) {
|
|
// An executor function receives a cancel function as a parameter
|
|
cancel = c;
|
|
}),
|
|
});
|
|
|
|
// cancel the request
|
|
cancel();
|
|
```
|
|
|
|
You can cancel several requests with the same cancel token/abort controller. If a cancellation token is already cancelled at the moment of starting an Axios request, then the request is cancelled immediately, without any attempts to make a real request.
|