UNPKG

@cataract6545/tmui

Version:

tm-vuetify是一个新势力由主题驱动的UI组件库,相比其它优势大,组件全,设计趋势紧跟未来。具有主题生成,主题实时切换,暗黑实时切换,lottie动画,图表等新颖功能,tmui TMUI

115 lines (110 loc) 4.16 kB
import { fetchConfig,fetchConfigMethod } from './interface'; let config:fetchConfig={ url:"", data:{}, statusCode:200, header:{ // "content-type":"application/json" }, method:"POST", timeout:60000, dataType:"json", responseType:"text", sslVerify:true, withCredentials:false, firstIpv4:false } function request(cog:fetchConfig = config,complete?:Function,beforeRequest?:Function,afterRequest?:Function):Promise<UniApp.GeneralCallbackResult|UniApp.RequestSuccessCallbackResult>{ let newConfig = {...config,...cog} return new Promise(async (resolve,reject)=>{ if(typeof beforeRequest === 'function'){ let opts = await beforeRequest(newConfig); if(typeof opts !=='object'){ opts = {}; } newConfig = {...newConfig,...opts}; } uni.request({ url:newConfig.url||"", data:newConfig.data, header:newConfig.header, method:newConfig.method, timeout:newConfig.timeout, dataType:newConfig.dataType, responseType:newConfig.responseType, sslVerify:newConfig.sslVerify, withCredentials:newConfig.withCredentials, firstIpv4:newConfig.firstIpv4, async success(result) { if(result.statusCode !==newConfig?.statusCode){ reject(result) return; } if(typeof afterRequest === 'function'){ let opts = await afterRequest(result); try{ if(typeof opts !=='object'){ opts = result; } if(typeof opts ==='object' && Object.keys(opts)?.length==0){ opts = result; } }catch(e){ console.error('tmui:',e) } result = {...opts}; } resolve(result) }, fail(result) { reject(result) }, complete(result) { if(typeof complete === "function"){ complete(result) } }, }) }) } var beforeRequest:Function = (val:fetchConfig)=>val; var afterRequest:Function = (val:fetchConfig)=>val; export class fetchNet { /** * 构建新的请求 * @param cog 请示配置见:fetchConfig * @param beforeRequest 访问前执行的函数,可以是Promise,你可以对执行前的参数进行修改之类的,将以你最新的修改参数为准进行请求。 * @param afterRequest 访问后执行的函数,可以是Promise,提供请示后的数据,你可以在这里修改,返回,这样所有请求的数据返回后都为返回你修改后的数据。 */ constructor(cog:fetchConfig,beforeRequestFun?:Function,afterRequesFunt?:Function){ config = {...config,...(cog||{})}; if(typeof beforeRequestFun == 'function'){ beforeRequest = beforeRequestFun; } if(typeof afterRequesFunt == 'function'){ afterRequest = afterRequesFunt; } } static get(url:string,data:object={},opts:fetchConfig={}){ let cfg:fetchConfig = {...config,...(opts||{}),url:url,method:"GET",data:data}; return request(cfg) } static post(url:string,data:object={},opts:fetchConfig={}){ let cfg:fetchConfig = {...config,...(opts||{}),url:url,method:"POST",data:data}; return request(cfg) } /** * 请求 * @param cog 配置 * @param complete 访问结束后执行的函数 */ static async request(cog:fetchConfig = config,beforeFun?:Function,afterFun?:Function,complete?:Function){ let newConfig = {...config,...cog} if(typeof beforeFun == 'function'){ let testFun = await beforeFun(); let cb:UniApp.GeneralCallbackResult = {errMsg:"中止请求"} if(!testFun) return cb; } return request(newConfig,complete,(beforeFun||beforeRequest),(afterFun||afterRequest)); } }