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