2
0
mirror of https://github.com/tenrok/axios.git synced 2026-06-05 16:42:32 +03:00

Adding TypeScript definitions for cancel tokens

This commit is contained in:
Nick Uraltsev
2016-09-17 12:49:14 -07:00
parent 72dd897bb5
commit 2033ef3ad0
2 changed files with 60 additions and 2 deletions
Vendored
+31
View File
@@ -41,6 +41,7 @@ export interface AxiosRequestConfig {
httpAgent?: any;
httpsAgent?: any;
proxy?: AxiosProxyConfig;
cancelToken?: CancelToken;
}
export interface AxiosResponse {
@@ -66,6 +67,34 @@ export interface Promise<V> {
export interface AxiosPromise extends Promise<AxiosResponse> {
}
export interface CancelStatic {
new (message?: string): Cancel;
}
export interface Cancel {
message: string;
}
export interface Canceler {
(message?: string): void;
}
export interface CancelTokenStatic {
new (executor: (cancel: Canceler) => void): CancelToken;
source(): CancelTokenSource;
}
export interface CancelToken {
promise: Promise<Cancel>;
reason?: Cancel;
throwIfRequested(): void;
}
export interface CancelTokenSource {
token: CancelToken;
cancel: Canceler;
}
export interface AxiosInterceptorManager<V> {
use(onFulfilled: (value: V) => V | Promise<V>, onRejected?: (error: any) => any): number;
eject(id: number): void;
@@ -90,6 +119,8 @@ export interface AxiosStatic extends AxiosInstance {
(config: AxiosRequestConfig): AxiosPromise;
(url: string, config?: AxiosRequestConfig): AxiosPromise;
create(config?: AxiosRequestConfig): AxiosInstance;
Cancel: CancelStatic;
CancelToken: CancelTokenStatic;
all<T>(values: (T | Promise<T>)[]): Promise<T[]>;
spread<T, R>(callback: (...args: T[]) => R): (array: T[]) => R;
}
+29 -2
View File
@@ -1,4 +1,15 @@
import axios, { AxiosRequestConfig, AxiosResponse, AxiosError, AxiosInstance, AxiosAdapter } from '../../';
import axios, {
AxiosRequestConfig,
AxiosResponse,
AxiosError,
AxiosInstance,
AxiosAdapter,
Cancel,
CancelToken,
CancelTokenSource,
Canceler
} from '../../';
import { Promise } from 'es6-promise';
const config: AxiosRequestConfig = {
@@ -30,7 +41,8 @@ const config: AxiosRequestConfig = {
proxy: {
host: '127.0.0.1',
port: 9000
}
},
cancelToken: new axios.CancelToken((cancel: Canceler) => {})
};
const handleResponse = (response: AxiosResponse) => {
@@ -210,3 +222,18 @@ axios.get('/user')
axios.get('/user')
.catch((error: any) => Promise.resolve('foo'))
.then((value: string) => {});
// Cancellation
const source: CancelTokenSource = axios.CancelToken.source();
axios.get('/user', {
cancelToken: source.token
}).catch((thrown: AxiosError | Cancel) => {
if (thrown instanceof axios.Cancel) {
const cancel: Cancel = thrown;
console.log(cancel.message);
}
});
source.cancel('Operation has been canceled.');