1200字范文,内容丰富有趣,写作的好帮手!
1200字范文 > 微信小程序封装request请求 primise队列化 async await做同步处理 缓存token信息

微信小程序封装request请求 primise队列化 async await做同步处理 缓存token信息

时间:2021-09-22 22:54:14

相关推荐

微信小程序封装request请求 primise队列化 async await做同步处理 缓存token信息

话不多数直接上代码!

在app.js文件中加入,一般新建的项目都有globalData只需要在里面添加你的信息就行了

globalData: {Ip:'',Header:{//request 请求头'content-type': 'application/x-www-form-urlencoded;charset=utf-8', // 默认值'Authorization': ''},}

新建一个js文件在里面加上如下代码

const app=getApp()export default (url, data={}, method='GET') => {return new Promise((resolve, reject) => {// 1. new Promise初始化promise实例的状态为pendingwx.request({url: app.globalData.Ip + url,data,method,header:app.globalData.Header,success: (res) => {resolve(res.data); // resolve修改promise的状态为成功状态resolved},fail: (err) => {console.log('请求失败: ', err);reject(err); // reject修改promise的状态为失败状态 rejected}})})}

下面是如何使用,首先在顶部做引用,添加自己需要访问的url地址,注意要和前面在globalData里面定义的ip做拼接使用

import request from ''const url=''

下面就是具体的方法调用request请求

async getInfo(){let info = await request(url,{});consolo.log(info)},async update(){let res = await request(url,{json:{id:1,name:'张三'}},'POST');consolo.log(res)},

到这里一个简单的request请求的封装以及调用就做好了,下面是升级版,在公司里做的朋友都知道,一般公司里面给的接口都需要在请求头里面加token才能访问,像注册登录之类的借口才会放到白名单里面,下面是升级之后的代码

const app=getApp()export default (url, data={}, method='GET') => {return new Promise((resolve, reject) => {let userInfo=wx.getStorageSync('userInfo')if(userInfo.data){app.globalData.Header.Authorization = userInfo.data.token;}// 1. new Promise初始化promise实例的状态为pendingwx.request({url: app.globalData.Ip + url,data,method,header:app.globalData.Header,success: (res) => {if(data.is_login){// 登录请求// 将用户信息存入至本地wx.setStorageSync('userInfo', res.data)}resolve(res.data); // resolve修改promise的状态为成功状态resolved},fail: (err) => {console.log('请求失败: ', err);reject(err); // reject修改promise的状态为失败状态 rejected}})})}

下面是如何登录的,一般的话登录都需要appid,code,wx.login可以获取到code,appid可以放在globalData里面

import request from ''const url=''//登录调用request//登录doLogin(){let that = thiswx.login({success (res) {that.setData({code:res.code})that.login(that,res.code)}})},async login(that,code){let res = await request(url, {appid:that.data.appid,code:code,is_login:true});if(res.code==200&&res.data){wx.reLaunch({url: '../home/home',})}else{console.log(res)wx.showToast({title: '请退出,重新登录!',icon:'error'})}}

大致的就这麽多了,如果有帮助到您,请给个关注,加个收藏,这将是我创作的最大力量,谢谢!

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。