🎨 优化
parent
f8155b795a
commit
112fcfcd22
10
README.md
10
README.md
|
@ -225,7 +225,7 @@ axios('/test', {
|
||||||
|
|
||||||
#### 自定义错误处理`config.errorHandler`
|
#### 自定义错误处理`config.errorHandler`
|
||||||
|
|
||||||
可以添加到默认配置中,统一处理错误
|
可以添加到默认配置中,统一处理错误。
|
||||||
|
|
||||||
```typescript
|
```typescript
|
||||||
axios.defaults.errorHandler = function errorHandler(error) {
|
axios.defaults.errorHandler = function errorHandler(error) {
|
||||||
|
@ -241,7 +241,7 @@ const instance = axios.create({
|
||||||
});
|
});
|
||||||
```
|
```
|
||||||
|
|
||||||
也可以发送请求时通过自定义配置传入
|
也可以发送请求时通过自定义配置传入。
|
||||||
|
|
||||||
```typescript
|
```typescript
|
||||||
axios('/test', {
|
axios('/test', {
|
||||||
|
@ -254,7 +254,7 @@ axios('/test', {
|
||||||
|
|
||||||
#### 自定义平台适配器`config.adapter`
|
#### 自定义平台适配器`config.adapter`
|
||||||
|
|
||||||
您可以手动适配当前所处的平台
|
您可以手动适配当前所处的平台。
|
||||||
|
|
||||||
```typescript
|
```typescript
|
||||||
axios.defaults.adapter = function adapter(adapterConfig) {
|
axios.defaults.adapter = function adapter(adapterConfig) {
|
||||||
|
@ -316,7 +316,7 @@ axios.defaults.headers.post['Content-Type'] = 'application/x-www-form-urlencoded
|
||||||
|
|
||||||
##### 自定义实例默认配置
|
##### 自定义实例默认配置
|
||||||
|
|
||||||
可以创建时传入
|
可以创建时传入。
|
||||||
|
|
||||||
```typescript
|
```typescript
|
||||||
const instance = axios.create({
|
const instance = axios.create({
|
||||||
|
@ -332,7 +332,7 @@ const instance = axios.create({
|
||||||
});
|
});
|
||||||
```
|
```
|
||||||
|
|
||||||
也可以创建后修改
|
也可以创建后修改。
|
||||||
|
|
||||||
```typescript
|
```typescript
|
||||||
instance.defaults.baseURL = 'https://www.xxx.com';
|
instance.defaults.baseURL = 'https://www.xxx.com';
|
||||||
|
|
|
@ -2,10 +2,12 @@
|
||||||
* @Author: early-autumn
|
* @Author: early-autumn
|
||||||
* @Date: 2020-04-17 12:18:25
|
* @Date: 2020-04-17 12:18:25
|
||||||
* @LastEditors: early-autumn
|
* @LastEditors: early-autumn
|
||||||
* @LastEditTime: 2020-04-21 12:33:20
|
* @LastEditTime: 2020-04-22 09:25:03
|
||||||
*/
|
*/
|
||||||
import { Adapter, Platform } from './types';
|
import { Adapter, Platform } from './types';
|
||||||
|
|
||||||
|
// uniapp
|
||||||
|
declare let uni: Platform;
|
||||||
// 微信小程序
|
// 微信小程序
|
||||||
declare let wx: Platform;
|
declare let wx: Platform;
|
||||||
// 支付宝小程序
|
// 支付宝小程序
|
||||||
|
@ -16,10 +18,8 @@ declare let swan: Platform;
|
||||||
declare let tt: Platform;
|
declare let tt: Platform;
|
||||||
// QQ 小程序
|
// QQ 小程序
|
||||||
declare let qq: Platform;
|
declare let qq: Platform;
|
||||||
// uniapp
|
|
||||||
declare let uni: Platform;
|
|
||||||
|
|
||||||
const platformList = [
|
const stack = [
|
||||||
() => uni.request,
|
() => uni.request,
|
||||||
() => wx.request,
|
() => wx.request,
|
||||||
() => my.request,
|
() => my.request,
|
||||||
|
@ -29,30 +29,27 @@ const platformList = [
|
||||||
];
|
];
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 设置当前平台适配器
|
* 自适应当前平台
|
||||||
*
|
|
||||||
* 使用 try + catch递归 的方式实现平台的查找, 解决 typescript 开发时, wx,my,... 等全局变量未定义可能会报错导致程序被中止的问题
|
|
||||||
*
|
|
||||||
* 比如 ReferenceError: wx is not defined
|
|
||||||
*/
|
*/
|
||||||
function adaptive(adapter?: Adapter): Adapter | undefined {
|
function adaptive(): Adapter | undefined {
|
||||||
if (adapter !== undefined) {
|
let adapter: Adapter | undefined;
|
||||||
return adapter;
|
|
||||||
}
|
|
||||||
|
|
||||||
try {
|
try {
|
||||||
const platform = platformList.shift();
|
const platform = stack.shift();
|
||||||
|
|
||||||
if (platform === undefined) {
|
if (platform === undefined) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// platform() 可能会导致程序进入 catch
|
||||||
adapter = platform();
|
adapter = platform();
|
||||||
|
} catch (err) {}
|
||||||
|
|
||||||
throw 'next';
|
if (adapter !== undefined) {
|
||||||
} catch (err) {
|
return adapter;
|
||||||
return adaptive(adapter);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
return adaptive();
|
||||||
}
|
}
|
||||||
|
|
||||||
export default adaptive;
|
export default adaptive;
|
||||||
|
|
|
@ -2,7 +2,7 @@
|
||||||
* @Author: early-autumn
|
* @Author: early-autumn
|
||||||
* @Date: 2020-04-13 18:00:27
|
* @Date: 2020-04-13 18:00:27
|
||||||
* @LastEditors: early-autumn
|
* @LastEditors: early-autumn
|
||||||
* @LastEditTime: 2020-04-21 11:10:19
|
* @LastEditTime: 2020-04-21 20:19:49
|
||||||
*/
|
*/
|
||||||
import { Method, Params, Data, Interceptors, AxiosRequestConfig, AxiosResponse, Axios } from '../types';
|
import { Method, Params, Data, Interceptors, AxiosRequestConfig, AxiosResponse, Axios } from '../types';
|
||||||
import buildURL from '../helpers/buildURL';
|
import buildURL from '../helpers/buildURL';
|
||||||
|
@ -54,14 +54,14 @@ export default class AxiosStatic implements Axios {
|
||||||
}, 'reverse');
|
}, 'reverse');
|
||||||
|
|
||||||
// 发送请求
|
// 发送请求
|
||||||
let promisePesponse = promiseRequest.then(dispatchRequest) as Promise<AxiosResponse<T>>;
|
let promiseResponse = promiseRequest.then(dispatchRequest) as Promise<AxiosResponse<T>>;
|
||||||
|
|
||||||
// 执行响应拦截器
|
// 执行响应拦截器
|
||||||
this.interceptors.response.forEach(function executor({ resolved, rejected }) {
|
this.interceptors.response.forEach(function executor({ resolved, rejected }) {
|
||||||
promisePesponse = promisePesponse.then(resolved, rejected);
|
promiseResponse = promiseResponse.then(resolved, rejected);
|
||||||
});
|
});
|
||||||
|
|
||||||
return promisePesponse;
|
return promiseResponse;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
Loading…
Reference in New Issue