From 112fcfcd226724505192824b8f7397cced156114 Mon Sep 17 00:00:00 2001 From: "954270063@qq.com" <954270063@qq.com> Date: Wed, 22 Apr 2020 09:29:23 +0800 Subject: [PATCH] =?UTF-8?q?:art:=20=E4=BC=98=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 10 +++++----- src/adaptive.ts | 31 ++++++++++++++----------------- src/core/Axios.ts | 8 ++++---- 3 files changed, 23 insertions(+), 26 deletions(-) diff --git a/README.md b/README.md index 4c9329a..374505c 100644 --- a/README.md +++ b/README.md @@ -225,7 +225,7 @@ axios('/test', { #### 自定义错误处理`config.errorHandler` -可以添加到默认配置中,统一处理错误 +可以添加到默认配置中,统一处理错误。 ```typescript axios.defaults.errorHandler = function errorHandler(error) { @@ -241,7 +241,7 @@ const instance = axios.create({ }); ``` -也可以发送请求时通过自定义配置传入 +也可以发送请求时通过自定义配置传入。 ```typescript axios('/test', { @@ -254,7 +254,7 @@ axios('/test', { #### 自定义平台适配器`config.adapter` -您可以手动适配当前所处的平台 +您可以手动适配当前所处的平台。 ```typescript axios.defaults.adapter = function adapter(adapterConfig) { @@ -316,7 +316,7 @@ axios.defaults.headers.post['Content-Type'] = 'application/x-www-form-urlencoded ##### 自定义实例默认配置 -可以创建时传入 +可以创建时传入。 ```typescript const instance = axios.create({ @@ -332,7 +332,7 @@ const instance = axios.create({ }); ``` -也可以创建后修改 +也可以创建后修改。 ```typescript instance.defaults.baseURL = 'https://www.xxx.com'; diff --git a/src/adaptive.ts b/src/adaptive.ts index 57bbb42..cc1341c 100644 --- a/src/adaptive.ts +++ b/src/adaptive.ts @@ -2,10 +2,12 @@ * @Author: early-autumn * @Date: 2020-04-17 12:18:25 * @LastEditors: early-autumn - * @LastEditTime: 2020-04-21 12:33:20 + * @LastEditTime: 2020-04-22 09:25:03 */ import { Adapter, Platform } from './types'; +// uniapp +declare let uni: Platform; // 微信小程序 declare let wx: Platform; // 支付宝小程序 @@ -16,10 +18,8 @@ declare let swan: Platform; declare let tt: Platform; // QQ 小程序 declare let qq: Platform; -// uniapp -declare let uni: Platform; -const platformList = [ +const stack = [ () => uni.request, () => wx.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 { - if (adapter !== undefined) { - return adapter; - } +function adaptive(): Adapter | undefined { + let adapter: Adapter | undefined; try { - const platform = platformList.shift(); + const platform = stack.shift(); if (platform === undefined) { return; } + // platform() 可能会导致程序进入 catch adapter = platform(); + } catch (err) {} - throw 'next'; - } catch (err) { - return adaptive(adapter); + if (adapter !== undefined) { + return adapter; } + + return adaptive(); } export default adaptive; diff --git a/src/core/Axios.ts b/src/core/Axios.ts index c84e3c2..f18abc4 100644 --- a/src/core/Axios.ts +++ b/src/core/Axios.ts @@ -2,7 +2,7 @@ * @Author: early-autumn * @Date: 2020-04-13 18:00:27 * @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 buildURL from '../helpers/buildURL'; @@ -54,14 +54,14 @@ export default class AxiosStatic implements Axios { }, 'reverse'); // 发送请求 - let promisePesponse = promiseRequest.then(dispatchRequest) as Promise>; + let promiseResponse = promiseRequest.then(dispatchRequest) as Promise>; // 执行响应拦截器 this.interceptors.response.forEach(function executor({ resolved, rejected }) { - promisePesponse = promisePesponse.then(resolved, rejected); + promiseResponse = promiseResponse.then(resolved, rejected); }); - return promisePesponse; + return promiseResponse; } /**