From c8f557ec2313624002a1d349949c7ba2b296f1ee Mon Sep 17 00:00:00 2001 From: DCloud_LXH <283700113@qq.com> Date: Fri, 7 Apr 2023 15:33:24 +0800 Subject: [PATCH] chore: uni.promisify.adaptor.js --- template/default-ts/main.ts | 26 +------------------- template/default-ts/uni.promisify.adaptor.ts | 10 ++++++++ template/default/main.js | 26 +------------------- template/default/uni.promisify.adaptor.js | 10 ++++++++ 4 files changed, 22 insertions(+), 50 deletions(-) create mode 100644 template/default-ts/uni.promisify.adaptor.ts create mode 100644 template/default/uni.promisify.adaptor.js diff --git a/template/default-ts/main.ts b/template/default-ts/main.ts index 84bf957..0c5d13c 100755 --- a/template/default-ts/main.ts +++ b/template/default-ts/main.ts @@ -1,32 +1,8 @@ import Vue from 'vue' import App from './App.vue' +import './uni.promisify.adaptor' Vue.config.productionTip = false -function isPromise(obj: any) { - return ( - !!obj && - (typeof obj === "object" || typeof obj === "function") && - typeof obj.then === "function" - ); -} - -uni.addInterceptor({ - returnValue(res: any) { - if (!isPromise(res)) { - return res; - } - return new Promise((resolve, reject) => { - res.then((res: [any, any]) => { - if (res[0]) { - reject(res[0]); - } else { - resolve(res[1]); - } - }); - }); - }, -}); - const app = new (typeof App === 'function' ? App : Vue.extend(Object.assign({ mpType: 'app' }, App))) app.$mount(); diff --git a/template/default-ts/uni.promisify.adaptor.ts b/template/default-ts/uni.promisify.adaptor.ts new file mode 100644 index 0000000..168d9df --- /dev/null +++ b/template/default-ts/uni.promisify.adaptor.ts @@ -0,0 +1,10 @@ +uni.addInterceptor({ + returnValue (res) { + if (!(!!res && (typeof res === "object" || typeof res === "function") && typeof res.then === "function")) { + return res; + } + return new Promise((resolve, reject) => { + res.then((res: [unknown, unknown]) => res[0] ? reject(res[0]) : resolve(res[1])); + }); + }, +}); \ No newline at end of file diff --git a/template/default/main.js b/template/default/main.js index a1e6c63..aefaa4b 100755 --- a/template/default/main.js +++ b/template/default/main.js @@ -1,35 +1,11 @@ import Vue from 'vue' import App from './App' +import './uni.promisify.adaptor' Vue.config.productionTip = false App.mpType = 'app' -function isPromise(obj) { - return ( - !!obj && - (typeof obj === "object" || typeof obj === "function") && - typeof obj.then === "function" - ); -} - -uni.addInterceptor({ - returnValue(res) { - if (!isPromise(res)) { - return res; - } - return new Promise((resolve, reject) => { - res.then((res) => { - if (res[0]) { - reject(res[0]); - } else { - resolve(res[1]); - } - }); - }); - }, -}); - const app = new Vue({ ...App }) diff --git a/template/default/uni.promisify.adaptor.js b/template/default/uni.promisify.adaptor.js new file mode 100644 index 0000000..47fbce1 --- /dev/null +++ b/template/default/uni.promisify.adaptor.js @@ -0,0 +1,10 @@ +uni.addInterceptor({ + returnValue (res) { + if (!(!!res && (typeof res === "object" || typeof res === "function") && typeof res.then === "function")) { + return res; + } + return new Promise((resolve, reject) => { + res.then((res) => res[0] ? reject(res[0]) : resolve(res[1])); + }); + }, +}); \ No newline at end of file