【从零开始搭建uniapp开发框架】(十)—— 异步化封装
框架开源地址:https://gitee.com/yunhaotian/uniapp_mobileFrame
异步的方法,如果不传入 success、fail、complete 等 callback 参数,将以 Promise 返回数据
异步的方法,且有返回对象,如果希望获取返回对象,必须至少传入一项 success、fail、complete 等 callback 参数
在common文件夹下新建 sju.async.js 文件
sju.async.js源码:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 | /** * 对uni提供的所有api进行代理封装,让方法调用支持Promise * * uni.request({url:'url',data:data,success:'',fail:''}) * 引入封装包 * import uniAsync from '@/common/sju.async.js'; * 通过调用方法1: * uniAsync.request({url:'url',data:data}).then(res=>{成功执行的代码}) * 通过调用方法2:res是成功返回的数据 * function的前边需要添加async关键字 * let res = await uniAsync.request({url:'url',data:data}); */ // 使用proxy转换为异步化的uni方法 const uniAsync = new Proxy({}, { // target要代理的目标,name目标的key get(target, name) { return (obj) => new Promise((resolve, reject) => { uni[name]({ ...obj, success: res => { console.info( '-success' ) resolve(res) }, fail: res => { console.info( '-fail' ) reject(res) }, complete:res =>{ console.info( '-complete' ) } }) }) } }) export default uniAsync |
main.js引入封装类代码:
1 2 3 | import jsAsync from './common/async.js' Vue.prototype.jsAsync = jsAsync; |
封装方法调用:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | import uniAsync from '@/common/sju.async.js' ; //引用异步化封装方法 getInfo: async function (keyword) { //获取地址位置 var data = { keyword:keyword } //获取地址位置 let res = await uniAsync.request({ url: 'https://xxx.com/ws/place/v1/suggestion/?' , dataType: 'jsonp' , data:data }); var data = JSON.parse(res.data); var result = data; return result; } |
分类:
uniapp框架搭建
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了